这是sql表列的有效标识符吗?

时间:2013-03-01 20:04:34

标签: sql sql-server sql-server-2008 stored-procedures identifier

我错误地使用SP_RENAME存储过程重命名表列,现在我无法还原它。这是SQL Server的有效标识符吗?

enter image description here

这就是我所做的:

SP_RENAME '[WTF].[Name]', '[WhatThisFunction]', 'COLUMN'

然后,在看到意外结果后,我试图用

将其回滚
SP_RENAME '[WTF].[WhatThisFunction]', 'Name', 'COLUMN'

但是sql说无法找到该对象。有没有办法逃避括号?

更新 错误消息是: 消息15248,级别11,状态1,过程sp_rename,行215 参数@objname不明确或声称@objtype(COLUMN)错误。

2 个答案:

答案 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。