1

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) が間違っています。

4

2 に答える 2

2

これは私のために働いた:

SP_RENAME '[WTF].[[WhatThisFunction]]]', 'Name', 'COLUMN' 
于 2013-03-01T20:15:05.810 に答える
2

回答が削除された理由はわかりませんが、このスクリプトは実際には列の名前を「名前」に戻します。

SP_RENAME '[WTF]."[WhatThisFunction]"', 'name', 'COLUMN'

そうでしょう

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

user1948904 によってリストされています。

そもそも問題が発生した理由 (そして私も同じことをしました) は、sp_rename の最初のパラメーターに [] を含めるかどうかを指定できます。[] を 2 番目のパラメーターに配置すると、それが名前に含まれます。したがって、列の名前は、おそらく意図したものである WhatThisFunction ではなく [WhatThisFunction] になりました。

興味深いことに、デザイン ウィンドウに移動すると、列名は実際には [[WhatThisFunction]]] としてリストされ、変更をスクリプト化すると、それが sp_rename に渡されます。

于 2013-03-01T20:18:58.803 に答える