重命名指数动态
问题描述:
我试着做这样的事情(更换“ - ”与“_”上INDEXNAME),但不知道如何实现正确的级联重命名指数动态
DECLARE @TestTable varchar(50) ='TableTest'
DECLARE @TestDatabase varchar(30) ='DatabaseTest'
DECLARE @TestIndex VARCHAR(150) ='NonClusteredIndex-20150617-075305'
DECLARE @TestSchema VARCHAR(20) ='SChemaTest'
EXEC sp_rename N'[' + @TestSchema + '].['[email protected]+'].['+ @TestIndex +']'
, REPLACE(@TestIndex,'-','_')
, N'INDEX'
任何帮助将不胜感激。 谢谢
答
这应该适合你。请注意,您将收到Caution
消息。运行此脚本后,运行以下代码: Caution: Changing any part of an object name could break scripts and stored procedures.
。
DECLARE @TestTable varchar(50) ='TableTest'
DECLARE @TestDatabase varchar(30) ='DatabaseTest'
Declare @NewTestIndex varchar(150)
DECLARE @TestIndex VARCHAR(150) ='NonClusteredIndex-20150617-075305'
Set @NewTestIndex = Replace(@TestIndex,'-','_')
DECLARE @TestSchema VARCHAR(20) ='SChemaTest'
Declare @cmd varchar(max)
Set @cmd = 'EXEC sp_rename N''[' + @TestSchema + '].['[email protected]+'].['+ @TestIndex +']'', N''' [email protected] + ''', N''INDEX'''
Select @cmd
Execute (@cmd)
+1
这就是我要找的。 作品完美!!!!。 非常感谢(我需要在动态查询上练习) :( – Mefisto
我认为你需要动态SQL来做到这一点。 'sp_rename'不喜欢连接。 –
执行proc时无法执行复制和连接。将所需的值分配给变量,然后执行'sp_rename'。 –