如何重命名SQL Server中的表?

我用过的SQL查询是:

 ALTER TABLE oldtable RENAME TO newtable; 

但是,这给了我一个错误。

服务器:消息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" 

也可用于静态和数据types

如果您尝试exec sp_rename并收到LockMatchID错误,则可能会首先添加一个use [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;