2016-03-31 11 views
0

複数のテーブルをSQLサーバ間で移動するにはどうすればよいですか?スクリプトのみを使用してMS SQL Server間で複数のテーブルを移動する

コピーする必要があるテーブルのリストがあります。このリストから列挙型(またはそのようなもの)を作成し、項目をループして動的スクリプトを作成する方法はありますか?

すでにリンクサーバー接続を作成していますが、スクリプトはこの方法で動作するはずです。アイデンティティインサートもスクリプトで使用する必要があります。

これを行う最も簡単な方法は何ですか?

+0

ダイナミックSQLを使用してテーブルのリストを繰り返し表示しましたか? – Chris

+0

スキーマとデータの両方に対してSSMSを使用してスクリプトを生成するだけではありませんか? – Kritner

答えて

0

あなたは@destと@tablesだけを扱ってください。

declare @tables varchar(MAX) 
declare @t varchar(50) 
declare @sql varchar(MAX) 
declare @dest varchar(80) 

set @dest = 'myNewServer.newDb..'; 
set @tables = '[Table1], [Table2]' 


while len(@tables) > 0 
begin 
    --print left(@tables, charindex(',', @tables+',')-1) 
    set @t = left(@tables, charindex(',', @tables+',')-1) 
    set @sql = 'select * into "+ @dest + @t + ' from '[email protected] 
    set @tables = stuff(@tables, 1, charindex(',', @tables+','), '') 

    execute(@sql) 

end 

すべて癆データこのメソッドをコピーし、保存IDの理由:。

」...これは(名前&データ型)列情報以外のメタデータのいずれかをコピーしませんので、それは意志セキュリティ権限、インデックス、トリガー、制約などはありません。上記のManagement Studioの例も同じ問題を抱えています。 https://msdn.microsoft.com/en-us/library/aa337553.aspx

+0

目的地は文字列からテーブルと同じ方法で簡単に選択できます – Chris

+0

魅力のように動作します、ありがとう! テーブルのIDプロパティを保持するためのアドバイスはありますか? – Dunowen

+0

このメソッドは、列の名前とデータ型のみをコピーします。その他のメタデータはありません。制限なし、鍵なし、外部キーなし。 – Excelan

関連する問題