Wie kann ich eine Microsoft SQL Server-Datenbank in ein SQL-Skript sichern?

125

Gibt es eine Möglichkeit, eine Microsoft SQL Server-Datenbank in ein SQL-Skript zu exportieren?

Ich suche nach etwas, das sich ähnlich wie mysqldump verhält, einen Datenbanknamen verwendet und ein einziges Skript erstellt, das alle Tabellen, gespeicherten Prozeduren, alle Daten usw. neu erstellt.

Ich habe http://vyaskn.tripod.com/code.htm#inserts gesehen , aber ich möchte im Idealfall, dass etwas alles neu erstellt (nicht nur die Daten), was in einem einzigen Schritt funktioniert, um das endgültige Skript zu erstellen.

Matt Sheppard
quelle
@Matt Ja, die Daten werden nicht exportiert. Aus diesem Grund habe ich erwähnt, dass Sie es mit dem von Ihnen vorgeschlagenen Skript kombinieren sollten. Diese Methode erstellt jedoch ein Skript in der richtigen Reihenfolge.
Julio César
Tatsächlich müssen Sie in Mangement Studio 2008 nur die Option "Daten exportieren" aktivieren, und das Skript enthält sowohl Schema- als auch Einfügeanweisungen.
user24161
Verwandte Themen
Kenorb
@ MattSheppard Bitte beachten Sie, um eine der Antworten zu akzeptieren
030

Antworten:

111

Klicken Sie in SQL Server Management Studio mit der rechten Maustaste auf Ihre Datenbank und wählen Sie Tasks / Generate Scripts. Folgen Sie dem Assistenten und Sie erhalten ein Skript, das die Datenstruktur in der richtigen Reihenfolge nach Fremdschlüsseln neu erstellt. Wählen Sie im Assistentenschritt "Skriptoptionen festlegen" die Option "Erweitert" und ändern Sie die Option "Zu skriptende Datentypen" in "Schema und Daten".

TIPP: Wählen Sie im letzten Schritt "Skript für ein neues Abfragefenster" aus, damit funktioniert es viel schneller.

Julius Caesar
quelle
18
Denken Sie daran, in erweiterte Optionen zu gehen und es nicht nur das Schema, sondern auch die Daten zu skripten.
RomanSt
2
@romkyns verdient alle Up-Votes! "Zu skriptende Datentypen" ist der genaue Optionsname. Sie möchten "Schema und Daten" auswählen.
Solidau
2
Das Hauptproblem bei aus SSMS generierten Skripten besteht darin, dass sie nicht in der richtigen Reihenfolge angeordnet sind, um Abhängigkeiten zu berücksichtigen. Dies ist kein Problem für kleine Datenbanken, bei denen Sie dies manuell ausführen können, aber es ist definitiv ein Problem, wenn die Datenbank mehr als 50 Objekte enthält. Bisher haben wir dafür ApexSQL Script erfolgreich eingesetzt . Es ist ein Premium-Tool, aber Sie können es im Testmodus verwenden, um die Arbeit zu erledigen. Ich denke, Red Gate hat auch ein ähnliches Tool.
David Smithers
34

Versuchen Sie SQL Server Database Publishing Wizard . Möglicherweise müssen Sie das Skript aufgrund von Abhängigkeiten neu anordnen, damit es in einem Durchgang ausgeführt wird. Es enthält jedoch Ihr Schema und Ihre Daten.

Wenn Sie keine SQL XMO-Objekte für 2005 installiert haben, wird beim Ausführen des Assistenten eine Fehlermeldung angezeigt . Sie möchten die Microsoft SQL Server 2005-Verwaltungsobjektsammlung

Rob Allen
quelle
5
Tatsächlich müssen Sie das Skript nicht neu anordnen, da alle Einschränkungen gelöscht, das Schema erstellt, die Daten eingefügt und schließlich die Einschränkungen neu erstellt werden.
Daniel Silveira
Genial, das ist ziemlich ordentlich
Beep Beep
Dies ist ein großartiges Tool, das jedoch nur SQL Server 2015 unterstützt. Wie wäre es mit 2008 und später?
Nam G VU
12

Ich fand SQL Dumper ziemlich nützlich. Es ist kostenlos, damit Sie es ausprobieren können. Sie können die Datenbanktabellen und -spalten, Ansichten und sogar die Ergebnisse benutzerdefinierter Abfragen als SQL-Einfügeanweisungen auswählen.

Marc Climent
quelle
Die letzte stabile Version funktioniert nicht mit gespeicherten Prozeduren.
VMAtm
1
Die letzte Version kann von download.cnet.com/SQL-Dumper/3000-10254_4-10514574.html
Raynet,
7

Da ich nicht das richtige Tool gefunden habe, habe ich mein eigenes erstellt: ein SQLServerDump-Befehlszeilenprogramm. Überprüfen Sie es auf http://sqlserverdump.codeplex.com/ . In einem einzigen Schritt werden Schema und Daten neu erstellt.

Daniel
quelle
6

Probieren Sie DBSourceTools aus . Es wurde entwickelt, um ein Skript für eine Quellendatenbank zu erstellen und diese erneut in einer Zieldatenbank bereitzustellen. Es Skripte Schema und Daten.


quelle
6

Die empfohlene Lösung funktioniert nur in SQL 2000 und 2005. Wenn Sie dies in SQL 2008 tun möchten,

Sie können dies mit SQL 2008 ohne andere Plug-Ins tun. Klicken Sie mit der rechten Maustaste auf die Datenbank und wählen Sie "Aufgaben -> Skripte erstellen ...". Wählen Sie die Datenbank und das, was Sie sichern möchten. Klicken Sie auf "Weiter" und setzen Sie die "Skriptdaten" auf "Wahr".

Weitere Dokumentation unter link:

http://blog.sqlauthority.com/2011/05/07/sql-server-2008-2008-r2-create-script-to-copy-database-schema-and-all-the-objects-data-schema- Funktionen für gespeicherte Prozeduren lösen Tabellenansichten-Einschränkungen und alle anderen Datenbankobjekte aus /

tzerb
quelle
2

Der SQL Server-Assistent zum Veröffentlichen von Datenbanken scheint in der Tat der beste Weg zu sein, dies zu tun. Das Problem dabei ist, dass es nicht unter Windows 7 zu laufen scheint. Ich musste meinen alten Computer verwenden, um es zu benutzen. Positiv ist, dass es mit älteren SQL Server-Versionen wie 2000 funktioniert.

Bei neueren SQL-Versionen und Betriebssystemen ist diese Software möglicherweise einen Blick wert: http://sqlbackupandftp.com/


quelle
0

Ombelt ist ein nützliches Tool zum Exportieren von MS SQL Server-Datenbanken. www.ombelt.com

sehr ähnlich wie bei anderen DB-Mülldeponien.

Funktioniert bei mir.

Tim Williscroft
quelle
0

Überprüfen Sie das Microsoft SQL Server Schema Dump-Projekt ( mssql-schema-dumpTool bei GitHub ).

Verwendungszweck: mssqldump -h data-source-host -u username -p password [-d path/for/files] [-c] [-s] [-a] [-b DB1[,DB2[,DB3]]]

Der Export unterstützt:

  • DB: Schema, Benutzertypen, Benutzertabellentypen, Trigger, Volltextkataloge, Volltext-Stoplisten, gespeicherte Prozeduren, Funktionen
  • DB.Tables: Schema, Trigger, Indizes, DRI, Statistik
  • DB.Views: Schema, Trigger, Indizes, DRI, Statistik
Kenorb
quelle