Я использовал SQL
запрос:
ALTER TABLE oldtable RENAME TO newtable;
Но это дает мне ошибку.
Сервер: Msg 156, уровень 15, состояние 1, строка 1
Неверный синтаксис рядом с ключевым словом "TO".
Я использовал SQL
запрос:
ALTER TABLE oldtable RENAME TO newtable;
Но это дает мне ошибку.
Сервер: Msg 156, уровень 15, состояние 1, строка 1
Неверный синтаксис рядом с ключевым словом "TO".
Чтобы переименовать таблицу в SQL Server, используйте команду sp_rename
:
exec sp_rename 'schema.old_table_name', 'new_table_name'
Чтобы переименовать столбец:
sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';
Чтобы переименовать таблицу:
sp_rename 'old_table_name','new_table_name';
При использовании sp_rename, который работает, как в приведенных выше ответах, проверьте также, какие объекты затронуты после переименования, эта ссылка на эту таблицу, потому что вам тоже нужно изменить их.
Я взял пример кода для зависимостей таблиц в блоге Pinal Dave здесь
USE AdventureWorks
GO
SELECT
referencing_schema_name = SCHEMA_NAME(o.SCHEMA_ID),
referencing_object_name = o.name,
referencing_object_type_desc = o.type_desc,
referenced_schema_name,
referenced_object_name = referenced_entity_name,
referenced_object_type_desc = o1.type_desc,
referenced_server_name, referenced_database_name
--,sed.* -- Uncomment for all the columns
FROM
sys.sql_expression_dependencies sed
INNER JOIN
sys.objects o ON sed.referencing_id = o.[object_id]
LEFT OUTER JOIN
sys.objects o1 ON sed.referenced_id = o1.[object_id]
WHERE
referenced_entity_name = 'Customer'
Итак, все эти зависимые объекты необходимо обновить и
Или используйте некоторую надстройку, если вы можете, у некоторых из них есть функция переименования объекта, и все тоже зависят от объектов.
Имя таблицы
sp_rename "db_name.old_table_name", "new_table_name"
Столбец
sp_rename "db_name.old_table_name.name", "userName", "COLUMN"
Индекс
sp_rename "db_name.old_table_name.id", "product_ID", "INDEX"
также доступен для статики и типов данных
Если вы попробуете exec sp_rename
и получите ошибку LockMatchID, это может помочь сначала добавить оператор [database]:
Я пробовал
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
Что я должен был сделать, чтобы исправить это, нужно переписать его на:
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
это работает для меня.
ALTER TABLE table_name RENAME TO new_table_name;