Ich habe zwei SQL Server (beide 2005 Version).
Ich möchte mehrere Tabellen von einer zur anderen migrieren.
Ich habe versucht:
Auf dem Quellserver habe ich mit der rechten Maustaste auf die ausgewählte Datenbank geklickt
Tasks/Generate scripts
. Das Problem ist, dass es unterTable/View options
keineScript data
Option gibt.Dann habe ich
Script Table As/Create script
SQL-Dateien generiert, um die Tabellen auf meinem Zielserver zu erstellen. Aber ich brauche immer noch alle Daten.
Dann habe ich versucht:
SELECT *
INTO [destination server].[destination database].[dbo].[destination table]
FROM [source server].[source database].[dbo].[source table]
Aber ich bekomme den Fehler:
Objekt enthält mehr als die maximale Anzahl von Präfixen. Maximum ist 2.
Kann mich bitte jemand auf die richtige Lösung für mein Problem hinweisen?
Antworten:
Versuche dies:
Erstellen Sie Ihre Tabelle auf dem Zielserver mit Ihren Skripten aus dem
Script Table As / Create Script
SchrittAuf dem Zielserver können Sie dann eine T-SQL-Anweisung ausgeben:
INSERT INTO dbo.YourTableNameHere SELECT * FROM [SourceServer].[SourceDatabase].dbo.YourTableNameHere
Dies sollte gut funktionieren.
quelle
Nur um noch eine weitere Option anzuzeigen (für SQL Server 2008 und höher):
quelle
Es gibt eine Skripttabellenoption unter Aufgaben / Skripte generieren! Ich habe es auch am Anfang verpasst! Sie können dort jedoch Einfügeskripte erstellen (sehr nette Funktion, aber an einer sehr unintuitiven Stelle).
Wenn Sie zu Schritt "Skriptoptionen festlegen" gelangen, wechseln Sie zur Registerkarte "Erweitert".
Schritte beschrieben hier (Bilder können verstehen, aber ich schreibe in lettisch dort).
quelle
Versuchen Sie es mit dem SQL Server- Import- und Export-Assistenten (unter Aufgaben -> Daten exportieren).
Es bietet an, die Tabellen in der Zieldatenbank zu erstellen. Wie Sie gesehen haben, kann der Skriptassistent nur die Tabellenstruktur erstellen.
quelle
INSERT
Anweisungen enthält. scheint für sql-server-2005 sicherlich zuzutreffen . Haben Sie einen Link oder eine Referenz?Wenn Sie keine Berechtigung zum Verknüpfen von Servern haben, führen Sie die folgenden Schritte aus, um eine Tabelle mithilfe des SQL Server-Import- / Export-Assistenten von einem Server auf einen anderen zu importieren:
quelle
Wenn die Tabellen bereits mit den Skripten erstellt wurden, können Sie die Daten auch mithilfe des BCP-Befehls kopieren, um alle Daten von Ihrem Quellserver auf Ihren Zielserver zu kopieren
So exportieren Sie die Tabellendaten in eine Textdatei auf dem Quellserver:
So importieren Sie die Tabellendaten aus einer Textdatei auf dem Zielserver:
quelle
Nur für die Tritte.
Da ich keinen Verbindungsserver erstellen konnte und es nicht ausreichte, nur eine Verbindung zum Produktionsserver herzustellen, habe
INSERT INTO
ich Folgendes getan:Es ist eine Backdoor-Lösung, aber da ich Probleme hatte, hat es für mich funktioniert.
Da ich leere Tabellen mit erstellt habe
SCRIPT TABLE AS / CREATE
, um alle Schlüssel und Indizes zu übertragen, konnte ich nicht verwendenSELECT INTO
.SELECT INTO
Funktioniert nur, wenn die Tabellen am Zielspeicherort nicht vorhanden sind, aber keine Schlüssel und Indizes kopiert werden. Sie müssen dies also manuell durchführen. Der Nachteil der using-INSERT INTO
Anweisung besteht darin, dass Sie alle Spaltennamen manuell angeben müssen. Außerdem können Probleme auftreten, wenn einige Fremdschlüsseleinschränkungen fehlschlagen.Vielen Dank an alle Antworten, es gibt einige großartige Lösungen, aber ich habe mich entschieden, marc_s Antwort zu akzeptieren.
quelle
Sie können keinen Quell- / Zielserver auswählen.
Wenn sich die Datenbanken auf demselben Server befinden, können Sie Folgendes tun:
Wenn die Spalten der Tabelle gleich sind (einschließlich Reihenfolge!), Können Sie dies tun:
INSERT INTO [destination database].[dbo].[destination table] SELECT * FROM [source database].[dbo].[source table]
Wenn Sie dies einmal tun möchten, können Sie die Quellendatenbank sichern / wiederherstellen. Wenn Sie dies häufiger tun müssen, empfehlen wir Ihnen, ein SSIS-Projekt zu starten, in dem Sie die Quellendatenbank definieren (dort können Sie eine beliebige Verbindung auf einem beliebigen Server auswählen) und ein Projekt zu erstellen, in dem Sie Ihre Daten dorthin verschieben. Weitere Informationen finden Sie hier: http://msdn.microsoft.com/en-us/library/ms169917%28v=sql.105%29.aspx
quelle
So kopieren Sie Daten von der Quelle zum Ziel:
use <DestinationDatabase> select * into <DestinationTable> from <SourceDataBase>.dbo.<SourceTable>
quelle
Dies kann über "Daten importieren / exportieren ..." in SQL Server Management Studio erfolgen
quelle
Dies ist eine Umgehungslösung, aber es hat bei mir funktioniert. Ich hoffe, es funktioniert bei diesem Problem auch bei anderen:
Sie können die ausgewählte SQL-Abfrage für die Tabelle ausführen, die Sie exportieren möchten, und das Ergebnis als XLS-Datei auf Ihrem Laufwerk speichern.
Erstellen Sie nun die Tabelle, zu der Sie Daten hinzufügen möchten, mit allen Spalten und Indizes. Dies ist einfach möglich, indem Sie mit der rechten Maustaste auf die aktuelle Tabelle klicken und die Option Skript erstellen erstellen auswählen.
Jetzt können Sie mit der rechten Maustaste auf die Datenbank klicken, in der Sie Ihre Tabelle hinzufügen möchten, und Aufgaben> Importieren auswählen.
Der Import-Export-Assistent wird geöffnet und als Nächstes ausgewählt. Wählen Sie Microsoft Excel als Eingabedatenquelle aus, durchsuchen Sie die zuvor gespeicherte XLS-Datei und wählen Sie sie aus.
Wählen Sie nun den Zielserver und auch die bereits erstellte Zieltabelle aus.
Hinweis: Wenn ein identitätsbasiertes Feld vorhanden ist, möchten Sie in der Zieltabelle möglicherweise die Identitätseigenschaft entfernen, da diese Daten ebenfalls eingefügt werden. Wenn Sie diese also nur als Identitätseigenschaft hätten, würde der Importvorgang fehlschlagen.
Klicken Sie jetzt auf Weiter und dann auf Fertig stellen. Es wird angezeigt, wie viele Datensätze importiert werden, und der Erfolg wird zurückgegeben, wenn keine Fehler auftreten.
quelle
Eine weitere Option, wenn Sie sie zur Verfügung haben: c # .net. Insbesondere der Microsoft.SqlServer.Management.Smo-Namespace.
Ich verwende Code ähnlich dem folgenden in einer Skriptkomponente eines meiner SSIS-Pakete.
Ich glaube, ich musste explizit nach der Microsoft.SqlServer.Smo-Bibliothek suchen und sie zu den Referenzen hinzufügen. Aber abgesehen davon hat das für mich geklappt.
Update : Der Namespace und die Bibliotheken waren komplizierter als ich mich erinnerte.
Fügen Sie für Bibliotheken Verweise hinzu auf:
Fügen Sie für die Namespaces Folgendes hinzu:
quelle