SQL Serverで別のデータベースのテーブルの名前を変更する方法はありますか?現在のデータベースにいて、TEMPテーブル内の別のデータベースにデータを移行してから、その別のデータベース内のTEMPテーブルの名前を変更する場合。別のサーバーではデータベース名が変更される可能性があるため、「USE [データベース]」を使用したくありません。
事前に助けてくれてありがとう!
SQL Serverで別のデータベースのテーブルの名前を変更する方法はありますか?現在のデータベースにいて、TEMPテーブル内の別のデータベースにデータを移行してから、その別のデータベース内のTEMPテーブルの名前を変更する場合。別のサーバーではデータベース名が変更される可能性があるため、「USE [データベース]」を使用したくありません。
事前に助けてくれてありがとう!
回答:
動的SQLの使用
USE MyDB1
GO
DECLARE @db_name NVARCHAR(20) = 'myDB2'
DECLARE @sql NVARCHAR(1000)
SET @sql = N'EXEC '+ quotename(@db_name)+ '..sp_rename ''[MyTable]'', ''[YourTable]'';';
PRINT @sql;
EXEC SP_EXECUTESQL @sql;
または、EXECでデータベースを指定します。
USE MyDB1
GO
EXEC MyDB2..sp_rename 'MyTable', 'YourTable'
http://www.sqlservercentral.com/Forums/Topic931229-1292-1.aspxに記載されているとおり
SSMSを使用することもできます。SSMSを使用する利点は、参照と制約を通過し、それらの名前も変更されることです。SSMSでオブジェクトブラウザーを開くだけで、目的のテーブルを見つけて名前を変更できます。名前を変更するテーブルを参照する他のテーブルに外部キー制約がある場合、それらのキー定義でもテーブルの名前が新しいテーブル名に変更されます。
MyDB2..sp_rename
はるかに簡単です!