Ich habe eine Datenbank namens foo und eine Datenbank namens bar. Ich habe eine Tabelle in foo mit dem Namen tblFoobar, die ich von der Datenbank foo in die Datenbank bar verschieben möchte (Daten und alles). Wie lautet die SQL-Anweisung, um dies zu tun?
Antworten
Zu viele Anzeigen?Die Aufgabe "Daten importieren" von SQL Server Management Studio (klicken Sie mit der rechten Maustaste auf den DB-Namen und dann auf "Aufgaben") übernimmt den größten Teil dieser Aufgabe für Sie. Führen Sie sie von der Datenbank aus, in die Sie die Daten kopieren möchten.
Wenn die Tabellen nicht vorhanden sind, werden sie für Sie erstellt, aber Sie müssen wahrscheinlich alle Indizes usw. neu erstellen. Wenn die Tabellen vorhanden sind, werden die neuen Daten standardmäßig angehängt, aber Sie können das anpassen (Mappings bearbeiten), so dass alle vorhandenen Daten gelöscht werden.
Ich verwende diese Methode ständig und sie funktioniert recht gut.
Auf SQL Server? und auf demselben Datenbankserver? Verwenden Sie eine dreiteilige Namensgebung.
INSERT INTO bar..tblFoobar( *fieldlist* )
SELECT *fieldlist* FROM foo..tblFoobar
Dadurch werden lediglich die Daten verschoben. Wenn Sie die Tabellendefinition (und andere Attribute wie Berechtigungen und Indizes) verschieben wollen, müssen Sie etwas anderes tun.
Das sollte funktionieren:
SELECT *
INTO DestinationDB..MyDestinationTable
FROM SourceDB..MySourceTable
Sie wird no Beschränkungen, Vorgaben oder Indizes kopieren. Die erstellte Tabelle wird no einen geclusterten Index haben.
Alternativ können Sie auch:
INSERT INTO DestinationDB..MyDestinationTable
SELECT * FROM SourceDB..MySourceTable
Wenn Ihre Zieltabelle existiert und leer ist.
Wenn es sich nur um eine Tabelle handelt, müssen Sie nur folgende Schritte ausführen
- Definition der Skripttabelle
- Neue Tabelle in einer anderen Datenbank erstellen
- Regeln, Indizes, Berechtigungen und dergleichen aktualisieren
- Daten importieren (mehrere Beispiele für das Einfügen in sind bereits oben gezeigt)
Eine Sache, die Sie berücksichtigen müssen, sind weitere Aktualisierungen wie die Migration anderer Objekte in der Zukunft. Beachten Sie, dass Ihre Quell- und Zieltabellen nicht denselben Namen haben. Das bedeutet, dass Sie auch Änderungen vornehmen müssen, wenn Sie Objekte wie Ansichten, gespeicherte Prozeduren und andere abhängen.
Bei einem oder mehreren Objekten können Sie ohne Probleme manuell vorgehen. Wenn es jedoch mehr als nur ein paar Aktualisierungen gibt, sind Vergleichstools von Drittanbietern sehr nützlich. Im Moment benutze ich ApexSQL Diff für Schemamigrationen, aber Sie können mit keinem anderen Tool auf dem Markt etwas falsch machen.
- See previous answers
- Weitere Antworten anzeigen