我使用的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”附近的语法错误。
当前回答
如果你尝试exec sp_rename并收到一个LockMatchID错误,那么它可能会帮助添加一个use [database]语句:
我试着
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
-- Invalid EXECUTE statement using object "Object", method "LockMatchID".
我要做的就是把它重写成:
use database_name
exec sp_rename '[dbo].[table_name]', 'new_table_name';
其他回答
表名
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错误,那么它可能会帮助添加一个use [database]语句:
我试着
exec sp_rename '[database_name].[dbo].[table_name]', 'new_table_name';
-- Invalid EXECUTE statement using object "Object", method "LockMatchID".
我要做的就是把它重写成:
use database_name
exec sp_rename '[dbo].[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'
因此,所有这些依赖对象也需要更新
或者如果可以的话使用一些外接程序,其中一些具有重命名对象的功能,并且都依赖于ent对象
这里的提议没有任何效果。 把数据插入到新表中
SELECT *
INTO [acecodetable].['PSCLineReason']
FROM [acecodetable].['15_PSCLineReason'];
也许会对某人有用。
在我的情况下,它不识别新的模式,而且dbo是所有者。
更新
EXECUTE sp_rename N'[acecodetable].[''TradeAgreementClaim'']', N'TradeAgreementClaim';
为我工作。 我从更新其中一个表的PK时自动生成的脚本中找到了它。 这样它也能识别新的模式。
重命名一个列。
sp_rename 'table_name.old_column_name', 'new_column_name' , 'COLUMN';
重命名一个表。
sp_rename 'old_table_name','new_table_name';