我正在尝试使用Microsoft SQL Server Management Studio 2018更改Microsoft SQL Server 2017 Standard版中的一系列表名。
我一直在传输的代码基于以下代码:
use DatabaseX
declare @RunRW varchar(MAX)
declare @ArVC varchar(4)
declare @StartAr smallint
declare @SlutAr smallint
declare @Ar smallint
set @StartAr = 2000
set @SlutAr = 2018
set @Ar = @StartAr
while @Ar <= @SlutAr
begin
set @ArVC = cast(@Ar as varchar)
set @RunRW = '
exec sp_rename ''TMP_Table_Name_' + @ArVC + ',''Table_Name_' + @ArVC + ''
exec (@RunRW)
set @Ar = @Ar + 1
end
我在exec sp_rename
语法中尝试了不同数量的引号。似乎我可以通过更改这些来解决故障。上面的示例代码提供以下错误消息:
Msg 102,第15级,状态1,第2行'TMP_Table_Name_2000'附近的语法不正确。
我也尝试过四个退出而不是两个退出。
[另一种尝试是按原样动态运行存储的过程,而没有@RunRW变量。那也不起作用。
我做错了什么/丢失了,或者无法通过动态代码运行sp_rename
?
您错过了两个表名的结尾引号。如果您更改:
set @RunRW = '
exec sp_rename ''TMP_Table_Name_' + @ArVC + ',''Table_Name_' + @ArVC + ''
成为
set @RunRW = '
exec sp_rename ''TMP_Table_Name_' + @ArVC + ''',''Table_Name_' + @ArVC + ''''
它将消除错误。