Erstellen Sie ein SQL-Skript, das Datenbanken und Tabellen erstellt

102

Ich habe eine SQL-Datenbank und Tabellen, die ich in einem anderen SQL Server replizieren möchte. Ich möchte ein SQL-Skript erstellen, das die Datenbank und die Tabellen in einem einzigen Skript erstellt.

Ich kann für jeden Fall ein "Create" -Skript mit SQL Management Studio erstellen (Datenbank und Tabellen), möchte aber wissen, ob die Kombination der beiden "Create" -Skripte zu einem einzigen Skript ausreicht.

Vielen Dank.

Tony
quelle
26
Könnten Sie bitte die akzeptierte Antwort ändern?
Skolima
1
@ Skolima stimmte zu, die akzeptierte Antwort (von Clayton) wird schließlich das Ergebnis erhalten, aber
CJMs

Antworten:

18

In SQL Server Management Studio können Sie mit der rechten Maustaste auf die Datenbank klicken, die Sie replizieren möchten, und "Skriptdatenbank als" auswählen, damit das Tool die entsprechende SQL-Datei erstellt, um diese Datenbank auf einem anderen Server zu replizieren. Sie können diesen Vorgang für jede Tabelle wiederholen, die Sie erstellen möchten, und dann die Dateien in einer einzelnen SQL-Datei zusammenführen. Vergessen Sie nicht, nach dem Erstellen Ihrer Datenbank, jedoch vor jeder Tabellenerstellung, eine using-Anweisung hinzuzufügen.

In neueren Versionen von SQL Server können Sie dies in einer Datei in SSMS erhalten.

  1. Klicken Sie mit der rechten Maustaste auf eine Datenbank.
  2. Aufgaben
  3. Skripte generieren

Dadurch wird ein Assistent gestartet, mit dem Sie die gesamte Datenbank oder nur Teile skripten können. Es scheint keine T-SQL-Methode dafür zu geben.

Generieren Sie SQL Server-Skripte

Clayton
quelle
182
Scrollen Sie weiter ...
CJMs
Die Antwort von CJM reicht immer noch nicht aus. Nach Anwendung der CJM-Methode sollten Sie auch die Shawna Jacobs-Methode anwenden.
Andrzej Martyna
Wie auch immer, dies ist Standard-SQL für MySQL zum Beispiel?
Benjamin Goodacre
378

Obwohl Claytons Antwort Sie (irgendwann) dorthin bringt, haben Sie in SQL2005 / 2008 / R2 / 2012 eine weitaus einfachere Option:

Klicken Sie mit der rechten Maustaste auf die Datenbank, wählen Sie Tasksund dannGenerate Scripts , um den Skript-Assistenten zu starten. Auf diese Weise können Sie ein einzelnes Skript generieren, mit dem die gesamte Datenbank einschließlich Tabelle / Indizes und Einschränkungen / gespeicherte Prozeduren / Funktionen / Benutzer / etc. Neu erstellt werden kann. Es gibt eine Vielzahl von Optionen, die Sie konfigurieren können, um die Ausgabe anzupassen. Das meiste davon ist jedoch selbsterklärend.

Wenn Sie mit den Standardoptionen zufrieden sind, können Sie den gesamten Job in Sekundenschnelle erledigen.

Wenn Sie die Daten in der Datenbank neu erstellen möchten (als eine Reihe von INSERTS), würde ich auch das SSMS Tools Pack empfehlen (kostenlos für SQL 2008, kostenpflichtig für SQL 2012).

CJM
quelle
5
Das ist exzellent, ich habe es einfach gemacht und mir eine Menge Zeit gespart.
Bill Sambrone
@ CJM Ich denke, ich liebe dich fast! :-P
Piero Alberto
Ich habe diese Schritte genau befolgt, aber ich bekomme immer noch jede Menge Fehler und kann sie nicht korrigieren. Irgendeine Hilfe?
user1789573
Ich schlage vor, dass Sie Ihre eigene Frage dazu stellen - stellen Sie sicher, dass Sie Details zu den von Ihnen unternommenen Schritten und den Fehlern, die Sie erhalten haben, veröffentlichen.
CJM
@ user1789573 - wie Shawna Jacobs geschrieben hat - SSMS kümmert sich nicht um Abhängigkeiten (Schande über das SSMS-Entwicklerteam!), so dass Sie "von Natur aus" Unmengen von Fehlern haben werden. Folgen Sie Shawna Jacobs Antwort, um diese Schwäche von SSMS zu beheben.
Andrzej Martyna
9

Eine hervorragende Erklärung finden Sie hier: Generieren Sie ein Skript in SQL Server Management Studio

Mit freundlicher Genehmigung von Ali Issa Folgendes müssen Sie tun:

  1. Klicken Sie mit der rechten Maustaste auf die Datenbank (nicht auf die Tabelle) und wählen Sie Aufgaben -> Skripte generieren
  2. Weiter -> Wählen Sie die angeforderte Tabelle (n) aus (aus bestimmten Datenbankobjekten auswählen)
  3. Weiter -> Klicken Sie auf Erweitert -> Datentypen für Skript = Schema und Daten

Wenn Sie ein Skript erstellen möchten, das nur die Tabellen generiert (keine Daten), können Sie den erweiterten Teil der Anweisungen überspringen!

HelloImKevo
quelle
7

Ich bin mir nicht sicher, warum SSMS die Ausführungsreihenfolge nicht berücksichtigt, aber einfach nicht. Dies ist kein Problem für kleine Datenbanken, aber was ist, wenn Ihre Datenbank 200 Objekte enthält? In diesem Fall spielt die Reihenfolge der Ausführung eine Rolle, da es nicht wirklich einfach ist, all dies durchzugehen.

Für ungeordnete Skripte, die von SSMS generiert wurden, können Sie folgen

a) Führen Sie das Skript aus (einige Objekte werden nicht eingefügt, es treten Fehler auf).

b) Entfernen Sie alle Objekte aus dem Skript, die der Datenbank hinzugefügt wurden

c) Gehen Sie zurück zu a), bis schließlich alles ausgeführt ist

Alternativ können Sie Tools von Drittanbietern wie ApexSQL Script oder andere bereits in diesem Thread erwähnte Tools (SSMS-Toolpack, Red Gate und andere) verwenden.

All dies kümmert sich um die Abhängigkeiten für Sie und spart Ihnen noch mehr Zeit.

Shawna Jacobs
quelle
1

Ja, Sie können einem Skript so viele SQL-Anweisungen hinzufügen, wie Sie möchten. Nur eines zu beachten: Die Reihenfolge ist wichtig. Sie können erst dann in eine Tabelle einfügen, wenn Sie sie erstellt haben. Sie können keinen Fremdschlüssel festlegen, bis der Primärschlüssel eingefügt ist.

Duffymo
quelle