SQL Server从另一个数据库重命名表


10

SQL Server中是否可以重命名另一个数据库中的表?在当前数据库中并将数据迁移到TEMP表中的另一个数据库,然后在该另一个数据库中重命名TEMP表时。我不想使用“ USE [database]”,因为数据库名称可能会在其他服务器上更改。

我在这里先向您的帮助表示感谢!

Answers:


6

您应该使用动态sql来做到这一点。构建一个字符串并执行它。只要您知道目标数据库的名称,一切就可以了。

use CurrentDB
declare @x varchar(1000), @otherDb sysname = 'NewDB';

set @x = 'use ' + @otherDB + '

EXEC sp_rename ''dbo.temp'', ''temp2''
'
exec (@x);
print @x;
GO

3

当然有可能,但是请记住,应尽可能避免使用动态SQL 。它很容易导致安全和性能问题。

在考虑了一下您的问题之后,您确定使用正确的名称创建另一个表,然后从TEMP表中简单地插入其中就不会有意义吗?我假设TEMP表实际上是本地/全局temp表或表变量。



0

您也可以使用SSMS。使用SSMS的优点是,它将遍历您的引用和约束并对其重命名。只需在SSMS中打开对象浏览器,找到感兴趣的表并将其重命名。如果在其他表中有外键约束,这些外键约束引用了要重命名的表,则也会在这些键定义中将表重命名为新表名。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.