Zeilen zwischen Datenbanken im SQL Server kopieren

7

Was ist der effizienteste Weg, um eine große Anzahl von Zeilen von einer Tabelle in einer Datenbank in eine andere Tabelle in einer anderen Datenbank mit exakt derselben Struktur zu kopieren?

    
Adele 03.11.2010, 00:32
quelle

7 Antworten

13

Wenn Ihr Log-IO-Subsystem dies zulässt, dann:

%Vor%

Aber die gesamte Übertragung in einer einzigen Anweisung auftreten, die bedeutet eine einzige Transaktion, was bedeutet, dass x2,5 Datengröße Mortem werden muss und gehalten während der gesamten Aussage. Ie. Wenn Sie 50 GB übertragen, wird Ihr Ziel-DB-Protokoll auf 250 GB anwachsen (selbst wenn der Wiederherstellungsmodus auf "Einfach" eingestellt ist!).

Wenn Sie sich um das Protokoll kümmern, müssen Sie es in Stapeln übertragen. Sie können immer noch den INSERT ... SELECT-Trick ausführen, aber Ihr SELECT muss einige Schlüsselbereiche und eine Stapelanzahl von Zeilen verwenden.

Schließlich können Sie immer ein tun bcp out gefolgt von einem bcp in , wird es ziemlich schnell arbeitet und ist wahrscheinlich der schnellste Weg, um eine zuverlässige Übertragung in Gang zu bringen.

    
Remus Rusanu 03.11.2010, 00:38
quelle
15

Wenn sich die Datenbanken auf demselben Server befinden, ist es trivial - Sie würden es tun, als würden Sie zwischen Tabellen in derselben Datenbank kopieren, d. h.

%Vor%

Wenn sich die Datenbanken auf verschiedenen Servern befinden, müssen Sie die Abfrage mithilfe eines OPENQUERY-, OPENROWSET- oder eines Verbindungsservers durchführen, aber im Grunde genommen würden Sie immer noch eine Variante des Befehls schreiben oben.

Alternativ ist es ein Fall von BCP out und BCP in oder mit SQL Server Management Studio Datentransfer-Assistent.

    
Chris J 03.11.2010 00:39
quelle
3

Eine einfache Möglichkeit besteht darin, SSMS zu öffnen und mit der rechten Maustaste auf Datenbank zu klicken und zu Aufgaben & gt; Importieren Sie Daten und folgen Sie dem Assistenten, um Quelle und Ziel festzulegen.

Auf diese Weise, wenn Daten auf verschiedenen Systemen existieren und selbst wenn Sie die Struktur ändern möchten, können Sie dies tun.

Sie können Daten auch gleichzeitig vom Ziel anfügen oder löschen.

    
Justin King 03.11.2010 04:20
quelle
0

Ich würde eine Masseneinfügung in Betracht ziehen:

Ссылка

    
Mike Cheel 03.11.2010 00:42
quelle
0

Sie können einfach kopieren Datenbank-Assistenten Ссылка

    
Amr Badawy 03.11.2010 04:43
quelle
0

Einfügen in CRS_New.dbo.SalesUpdateRBCustomerExternalRelationShipData_V1 (RBCustomerExternalEdgeKeyFather, RBCustomerExternalEdgeKeySon, EdgeLevelIndicator, Status, Edition, StatusValidFrom, ActiveIndicator, AddAttributeList_id) Wählen Sie RBCustomerExternalEdgeKeyFather, RBCustomerExternalEdgeKeySon, EdgeLevelIndicator, Status, Edition, StatusValidFrom, ActiveIndicator, AddAttributeList_id aus CRS.dbo.SalesUpdateRBCustomerExternalRelationShipData_V11

aus     
Jaydeep Shil 09.09.2015 05:45
quelle
0
%Vor%

HINWEIS: .dbo ist wichtig

Wenn die Spalten in den Quell- und Zieltabellen unterschiedlich sind, erwähnen Sie explizit die Spalten für beide Tabellen. Beachten Sie, dass Datentypen gleich sein sollten

    
Nouman Bhatti 16.08.2016 22:57
quelle

Tags und Links