最近、データを失わずに SQL Server 2000 のテーブル (および列と FK/PK 制約) の名前を変更する必要がありました。このアクションを実行するための明確な DDL T-SQL ステートメントがないように見えたので、sp_rename を使用してオブジェクト名を直接いじりました。
これが問題の唯一の解決策でしたか? (それ以外は、そもそもテーブルに正しい名前を付けること以外に-doh!)
最近、データを失わずに SQL Server 2000 のテーブル (および列と FK/PK 制約) の名前を変更する必要がありました。このアクションを実行するための明確な DDL T-SQL ステートメントがないように見えたので、sp_rename を使用してオブジェクト名を直接いじりました。
これが問題の唯一の解決策でしたか? (それ以外は、そもそもテーブルに正しい名前を付けること以外に-doh!)
sp_rename が正しい方法です。
EXEC sp_rename 'Old_TableName', 'New_TableName'
や
EXEC sp_rename 'Old_TableName', 'New_TableName' は正常に動作しますが、「alter table old_name to new_name」のようなキーワードです
テーブルの古いバージョンと新しいバージョンの両方で同時に作業できるソリューションがあります。これは、データがレプリケートされている場合、および/またはクライアント インターフェイスを介してアクセスされている場合に特に重要です (クライアント インターフェイスの古いバージョンは、古いテーブル名で引き続き機能します)。
ALTER TABLE
" " コマンドを使用して、テーブルの制約 (FK を含む) を変更しますテーブル名やフィールド名は変更せず、次のようなビューを作成してください。
SELECT oldTable.oldField1 as newField1, ...
それを newTable として保存します (そして、要求された場合は、別のサーバーに配布します)
この方法では PK を変更できないことに注意してください。
おそらく唯一ではありません: master データベースをいつでもいじって、そこでテーブル名を更新できると思いますが、これは非常にお勧めできません。