2017-11-07 1 views
2

SQL Serverでテーブルの名前を変更したい。私は、適切な構文は次のようになり知っている:SQL Server - テーブル名を変更する方法

sp_rename 'old table name','new table name'; 

私はそれをこのように書いた場合、それはどんな違いを生むだろう?:

EXEC sp_rename 'old table name','new table name'; 

私はSQL Server上でそれを実行しようとしたEXECせず、それがハイライトでしょう私の構文sp_renameは赤ですが、エラーは発生しません。

誰かがテーブルの名前を変更する適切な方法や他の選択肢を提案できますか?

注:テーブル名を変更すると、スクリプトやストアドプロシージャが影響を受けたり、おそらく破損したりすることがありますが、これを防ぐ方法はありますか?それに依存する別のテーブルがある場合にのみ、それは壊れますか?

+1

同じクエリウィンドウ内に他のSQL文がある場合は、 'exec'を使用する必要があります。最初のステートメント(execなし)は、それ自身が実行された場合にのみ動作します – Squirrel

+0

したがって、1つのSQLスクリプト内に40個のテーブルを名前変更したい場合は、40個のステートメントごとにEXECを追加する必要がありますか? –

+0

はい。あなたは – Squirrel

答えて

1

EXECキーワードの有無にかかわらず、ストアドプロシージャを実行できます。だからあなたのアプローチはどちらも正しいですし、同じ効果があります。

すべて以下の3アプローチが有効であるが、最も一般的に使用されるには、第一1

EXEC sp_rename 'old table name','new table name'; 

EXECUTE sp_rename 'old table name','new table name'; 

sp_rename 'old table name','new table name'; 
+0

同じクエリエディタウィンドウでいくつかのテーブルの名前を変更したい場合は、EXECを追加する必要がありますか? –

+0

いいえ、それぞれの名前を別々に呼び出す必要があります。 EXECはmadatoryではありません –

+0

ありがとうございました –

1

で最も簡単な方法は、テーブル名を右クリックすることと、「名前の変更」をクリックします。しかし、あなたのprocを使う方法はどちらも正しいです。

特にこの手順を使用すると、特にストアドプロシージャの名前を変更する際には注意が必要です。 in many placesは、sp_renameがデータベース内のこれらのオブジェクトを識別するためによく使用されるsys.proceduresテーブルを更新できないことが報告されています。

+0

sp_rename ""、 ""を使用する方が安全ですか? –

+0

あなたはテーブルのためにあなたのやり方をしています。しかし、プロシージャの場合は、 – scsimon

関連する問題