2009-06-10 18 views
0

Ich habe zwei Datenbanken, sagen wir Datenbank A und B, mit verschiedenen Datenstrukturen. In Datenbank A gibt es eine Tabelle Kontakte. In Datenbank B gibt es eine Tabelle Konten.Daten von einer Datenbank in eine andere übertragen

Ich möchte Daten von Datenbank A Tabelle Kontakte zu Datenbank B Tabelle Konten übertragen. Ich benutze SQL Server 2005 und möchte dazu SQL-Skripte schreiben.

Kann mir jemand sagen, was ist der einfachste und effizienteste Weg, um dies zu erreichen: a) Wenn sie auf dem gleichen SQL Server b) Wenn sie auf verschiedenen SQL-Server sind.

Prost

Antwort

1

Verwenden Sie SSIS. Es funktioniert sowohl für lokale als auch für entfernte Fälle und ermöglicht es Ihnen, eine Transformation zwischen den Tabellen einzurichten, Spalten zu anderen Spalten zuzuordnen usw.

+0

SSIS BOL: http://msdn.microsoft.com/en-us/library/ms141026. aspx –

+0

Danke Mitch, Ich habe etwas auf SSIS gelesen. Es stimmt, dass SSIS nur über eine grafische Benutzeroberfläche verfügt, um das Mapping durchzuführen, oder ob es möglich ist, Skripts nach Abschluss der Zuordnung zu generieren, sodass es mehrfach verwendet werden kann. Das System, an dem ich arbeite, wird eine Stored Procedure ausführen, die Daten aus der Datenbank A in die Datenbank B –

1

Ist es eine einmalige Übertragung? Wenn es sich um eine einfache Übertragung ist schreibe ich eine SELECT-Anweisung die INSERT-Anweisungen zu erzeugen, dh

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

Run diese auf Datenbank A - und es wird die alle INSERT-Anweisungen ausspucken, die Sie kopieren und einfügen, so können Sie sie laufen auf Datenbank B.

Oder auf der gleichen Datenbank:

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

Immer noch nicht zufrieden - versuchen verknüpfte Server einrichten: http://msdn.microsoft.com/en-us/library/aa213778(SQL.80).aspx

+0

liest Danke russau. Ya Ich brauche die Operation mehrmals. –

1

Die einfachste Methode ist nicht unbedingt die effizienteste. SSIS ist wahrscheinlich der effizienteste, wie Mitch bereits angedeutet hat.

Am einfachsten (wenn Sie SSIS nicht bereits kennen) ist es, nur einen Verbindungsserver mit der fernen Datenbank einzurichten und die Daten über eine vierteilige Benennung auszuwählen. Sie setzen einen Verbindungsserver mit sp_addlinkedserver und sp_addlinkedsrvlogin (überprüfen BOL für die Syntax) auf und Abfrage wie folgt:

INSERT INTO MyLocalTable (ColumnList) 
SELECT <Columns> FROM RemoteServer.RemoteDB.RemoteSchema.RemoteTable 
+0

Danke Aaron, Ich habe etwas auf SSIS gelesen. Es stimmt, dass SSIS nur über eine grafische Benutzeroberfläche verfügt, um das Mapping durchzuführen, oder ob es möglich ist, Skripts nach Abschluss der Zuordnung zu generieren, sodass es mehrfach verwendet werden kann. Das System, an dem ich arbeite, wird eine gespeicherte Prozedur ausführen, die Daten aus Datenbank A in Datenbank B liest –

Verwandte Themen