たにぐちBLOG

C#が好きでたまんない

  PASSJブログ :: ホーム :: 連絡をする :: RSS  :: ATOM :: Login
  31 投稿数 :: 0 ストーリー :: 57 コメント :: 10 トラックバック

過去の記事

カテゴリ

イメージギャラリ

(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]といった具合。

投稿日時 : 2004年5月4日 0:24

コメントを追加

# sp_rename の第一引数, 第二引数 2004/05/04 2:46 河端善博の .TEXT でウェブログ
sp_rename の第一引数, 第二引数

# re: オブジェクト名に[(四角括弧)やダブルクォーテーションを使ってみる(SQL Server) 2004/05/04 3:15 河端善博
sp_rename, quotename, parsename を調べてみました。

# re: オブジェクト名に[(四角括弧)やダブルクォーテーションを使ってみる(SQL Server) 2004/05/04 14:07 たにぐち
sp_renameでは、ようするに、1番目の引数は普通のSQL内でオブジェクトを使用するのと同じで、2番目の引数は新しい名前をじかに入れればいいわけですね。1番目の引数はオブジェクトを識別できる必要があり、2番目は単に変更したい新しい名前を入れればいいわけだから当然といえば当然(^_^;)。

コメント

タイトル:
名前:
Url:
コメント: