我错误地使用SP_RENAME存储过程重命名表列,现在我无法还原它。这是SQL Server的有效标识符吗?
这就是我所做的:
SP_RENAME '[WTF].[Name]', '[WhatThisFunction]', 'COLUMN'
然后,在看到意外结果后,我试图用
将其回滚SP_RENAME '[WTF].[WhatThisFunction]', 'Name', 'COLUMN'
但是sql说无法找到该对象。有没有办法逃避括号?
更新 错误消息是: 消息15248,级别11,状态1,过程sp_rename,行215 参数@objname不明确或声称@objtype(COLUMN)错误。
答案 0 :(得分:2)
这对我有用:
SP_RENAME '[WTF].[[WhatThisFunction]]]', 'Name', 'COLUMN'
答案 1 :(得分:2)
我不确定为什么答案被删除了,但是这个脚本实际上会将列的名称改回“name”。
SP_RENAME '[WTF]."[WhatThisFunction]"', 'name', 'COLUMN'
所以
SP_RENAME '[WTF].[[WhatThisFunction]]]', 'Name', 'COLUMN'
由user1948904列出。
你最初遇到问题的原因(我做了同样的事情)是sp_rename的第一个参数可以有[]或者不是,如果你把[]放在然后,第二个参数将包含在名称中。因此,您的列的名称变为[WhatThisFunction]而不是WhatThisFunction,这可能是您的意图。
有趣的是,如果你进入设计窗口,列名实际上列为[[WhatThisFunction]]],当你编写更改脚本时,它会将其传递给sp_rename。