0

データ構造が異なる2つのデータベース、たとえばデータベースAとBがあります。データベースAには、テーブルの連絡先があります。データベースBには、テーブルAccountsがあります。

データベースAのテーブルの連絡先からデータベースBのテーブルのアカウントにデータを転送したい。私はSQLServer2005を使用しており、これを行うためのSQLスクリプトを作成したいと考えています。

誰かがこれを達成するための最も簡単で最も効率的な方法を教えてもらえますか:
a)同じSQLサーバー上にある
場合b)異なるSQLサーバー上にある場合。

4

3 に答える 3

2

最も簡単な方法が必ずしも最も効率的であるとは限りません。ミッチがすでに示したように、SSISがおそらく最も効率的です。

最も簡単な方法(SSISをまだ知らない場合)は、リモートDBにリンクされたサーバーをセットアップし、4つの部分からなる名前付けを使用してデータを選択することです。sp_addlinkedserverとsp_addlinkedsrvloginを使用してリンクサーバーをセットアップし(構文についてはBOLを確認してください)、次のようにクエリを実行します。

INSERT INTO MyLocalTable (ColumnList)
SELECT <Columns> FROM RemoteServer.RemoteDB.RemoteSchema.RemoteTable
于 2009-06-10T02:42:54.050 に答える
1

1回限りの転送ですか?単純な転送の場合は、SELECTステートメントを記述してINSERTステートメントを作成します。

SELECT 'INSERT INTO Accounts (ID, Name) VALUES (' + CAST(ID as VARCHAR) + ', ''' + Name  + ''')'
FROM Contacts

これをデータベースAで実行すると、すべてのINSERTステートメントが吐き出され、データベースBで実行できるようにコピーして貼り付けます。

または、同じデータベースで:

INSERT INTO DatabaseA.dbo.Accounts (ID, Name) 
SELECT Id, Name
FROM DatabaseB.dbo.Contacts

それでも満足できません-リンクサーバーを設定してみてください:http://msdn.microsoft.com/en-us/library/aa213778 (SQL.80).aspx

于 2009-06-10T02:42:07.547 に答える
1

SSIS を使用します。ローカルとリモートの両方のケースで機能し、テーブル間の変換を設定したり、列を他の列にマップしたりできます。

于 2009-06-10T02:31:01.407 に答える