(1)dbo.TABLEというテーブルがあったとします。これを、[TABLE1]という四角括弧のついたオブジェクト名に変更します。
実行:
sp_rename 'dbo.TABLE1', '[TABLE1]'
出力結果:
注意: オブジェクト名の一部の変更により、スクリプトおよびストアド プロシージャに影響を及ぼす可能性があります。
object の名前は '[TABLE1]' に変更されました。
(2)オブジェクト名が[TABLE1]に変更されたので。これを元に戻します。
実行:
EXEC sp_rename '[TABLE1]', 'TABLE1'
出力結果:
サーバー : メッセージ 15225、レベル 11、状態 1、プロシージャ sp_rename、行 273
'[TABLE1]' の名前による項目が現在のデータベース 'TestDB' に存在しませんでした。@itemtype は '(null)' として入力されました。
あらら、失敗
(3)そこで。。
実行:
EXEC sp_rename '[[TABLE1]]]', 'TABLE1'
出力結果:
注意: オブジェクト名の一部の変更により、スクリプトおよびストアド プロシージャに影響を及ぼす可能性があります。
object の名前は 'TABLE1' に変更されました。
成功!
結論:四角括弧を使用した場合、それをさらに四角括弧で囲う。ただし名前に使用する右括弧は二重にする(左括弧は不要)。もしくはそのまま"(ダブルクォーテーション)で囲う。
例えば[TABLE]]という名前なら[[TABLE1]]]]]または"[TABLE]]"とする。
どうでもいいことではあるけれど、オブジェクトを管理するソフトを作るなら考慮する必要があるかも。
ちなみに、四角括弧の変わりに"(ダブルクォーテーション)を使った場合は、オブジェクト名中の四角括弧には気をつけなくても良いが、ダブルクォーテーションを二重にしなければならない。
例えばTA"BLE1なら、"TA""BLE1"または[TA"BLE1]といった具合。