Skript der gesamten Datenbank SQL-Server

95

Gibt es eine Möglichkeit, ein Skript für alle Tabellen, Prozesse und andere Objekte aus einer Datenbank abzurufen? Ich weiß, dass es eine Option zum Skripten der Datenbank gibt, aber es gab mir nur eine Art Skript der obersten Ebene, sicherlich kein Skript zum Erstellen aller Tabellen, Prozesse, udfs, usw.

PositiveGuy
quelle
6
Er hat es mit SQL Server 2008 markiert, also nehme ich an, dass er es verwendet.
Colin Mackay
1
Soll das nicht zu serverfault.com gehen?
Salamander2007

Antworten:

162

In Management Studio Klicken Sie mit der rechten Maustaste auf Ihre Datenbank. Aufgaben -> Skripte generieren.

Das sollte es tun.

Chris Brandsma
quelle
2
Eine andere Möglichkeit besteht darin, SQL SMO zu verwenden und programmgesteuert
auszuskripten
Gibt es eine Möglichkeit, ein Skript dafür einzurichten, damit die Einstellungen immer gleich sind, unabhängig davon, wer sie ausführt? Ich sehe voraus, dass Leute in unserem Entwicklerteam diese Datei jedes Mal mit unterschiedlichen Einstellungen überschreiben ...
Joe Phillips
@ Joe, ich würde den Weg gehen, über den RobS spricht. Sie sollten dies mit PowerShell tun können. Schauen Sie sich andernfalls RedGate-Tools oder Visual Studio Team-Systeme mit Database Developer an.
Chris Brandsma
7
Standardmäßig werden die Daten nicht skriptiert. Wählen Sie unter Tabellen- / Ansichtsoptionen "Skriptdaten -> Wahr". Eine weitere nützliche Option ist "Script Drop -> True"
Stephen Hosking
1
Das generierte Skript enthält keine Informationen zur Sortierung der Spalten, es sei denn, Sie haben die letzte Option im Menü Extra> Optionen> Skriptgenerierung ausgewählt. Auf Deutsch lautet die Option "Sortierung ein gewisser". Selbst wenn die meisten dieser Optionen im Assistenten zum Generieren des Skripts enthalten sind, ist dies nicht der Fall (SQL Server 2008). Sie müssen die Option wirklich auswählen, bevor Sie den Assistenten aufrufen.
Olivier Faucheux
14

Ich habe ein Open-Source-Befehlszeilenprogramm namens SchemaZen geschrieben , das dies tut. Es ist viel schneller als Skripte aus dem Management Studio und die Ausgabe ist versionskontrollfreundlicher. Es unterstützt die Skripterstellung von Schema und Daten.

So generieren Sie Skripte:

schemazen.exe script --server localhost --database db --scriptDir c: \ somedir

Um die Datenbank aus Skripten neu zu erstellen, führen Sie Folgendes aus:

schemazen.exe create --server localhost --database db --scriptDir c: \ somedir
Seth Reno
quelle
Hallo, ich möchte die SQL-Abfrage aus meiner in Visual Studio erstellten lokalen Datenbank abrufen. Wie kann ich das mit diesem Tool tun? Ich muss die .ddf-Dateirichtung verwenden oder wie? Vielen Dank.
Karlo A. López
Es ist eine kompakte SQL-Datenbankdatei.
Karlo A. López
1
HEILIGER MIST DAS IST SCHNELL UND FANTASTISCH.
ConstantineK
1
@hobs Ich bin froh, dass du es nützlich fandest. : D
Seth Reno
1
@SethReno beschädigte sys-Indizes auf meiner Datenbank = SMO kann nichts ausschreiben, Ihr Skript kann es, also habe ich mir im Grunde eine Menge Zeit gespart, wenn ich manuell Mist mache. Übrigens, beeindruckend schnelles Reverse Engineering von allem, wie 1000x schneller als SSMS und es scheint schneller als SMO selbst zu sein (nicht zuletzt wegen der Startzeit).
ConstantineK
4

Ich habe ein Dienstprogramm für diese Aufgabe geschrieben, SMOscript .

Die Skriptgenerierung wird von der SMO-Bibliothek durchgeführt und unterstützt die neuen Objekttypen in SQL 2005 und 2008.

devio
quelle
Hmm, ich habe deine smo App auf meinem Vista 64-Bit installiert. Installation erfolgreich, aber ich sehe kein Element in meinem Programmverzeichnis oder in der Liste Alle Programme
PositiveGuy
3

Am Ende verwendeten wir eine Kombination aus SSMS-Skriptgenerierung, um Schema und Daten zu extrahieren, und verwendeten dann unser eigenes Datenbanktool, das das Parsen von Schlüsselwörtern und das tokenbasierte Ersetzen in Skripten ermöglicht. Außerdem wird sichergestellt, dass Skripte nur einmal angewendet werden.

Warum?

  • Wir müssen Installationen unter SQL Server 2000, 2005 und 2008 unterstützen, und es gibt Änderungen an den Datentypen zwischen den Versionen, z. B. 2005+ haben nvarchar (max), während 2000 nur ntext unterstützt. Unsere Skripte verwenden also ein Token und werden basierend auf der Datenbankauswahl durch den richtigen Typ ersetzt.
  • Die Ausführung einiger Skripte erfordert eine Wartezeit nach der Ausführung, z. B. Wenn Sie nach dem Erstellen einer neuen Datenbank über ein Skript nicht einige Sekunden gewartet haben, kann der SQL Server manchmal fehlschlagen (da er keine Zeit zum Erstellen der Datenbank hatte Dateien), als es darum ging, Tabellen usw. zu erstellen.
  • Wir wollten einen Verlauf darüber führen, welche Skripte wann ausgeführt wurden.
  • Wir wollten unserem Wix MSI-Installationsprogramm erlauben, Verbindungszeichenfolgen und Anmeldeinformationen anzugeben, und brauchten eine Möglichkeit, diese an die Skripte zu übergeben, also erneut unter Verwendung von Token und einer bedingten Logik.

Beispielskript (der Kürze halber bearbeitet)

-- Sleep: 5 
-- Sleep after creating database to allow file system to create db files
CREATE DATABASE [$Database$]
GO

EXEC sp_dbcmptlevel [$Database$], $CompatabilityLevel$
GO

USE [$Database$]
GO

IF '1'!='$IntegratedSecurity$'
BEGIN
    CREATE LOGIN [$Login$] WITH PASSWORD=N'$Password$', DEFAULT_DATABASE=[$Database$]
    CREATE USER [$User$] FOR LOGIN [$Login$]
    EXEC sp_addrolemember N'db_owner', N'$User$'
END
GO
si618
quelle
1

Ich empfehle einen Blick auf den RedGate SQL Packager. Es ist nicht kostenlos, aber nützlich genug, um den Preis wert zu sein.

Barry Hurt
quelle
1

Wenn ich nur die Tabellendaten betrachte, um den gesamten Inhalt der Tabellendaten in Management Studio 2012 und 2014 auszugeben, ist dies etwas ausgeblendet, aber ich habe die Option nach einigem Suchen gefunden:

  1. Klicken Sie mit der rechten Maustaste auf die Datenbank
  2. Wählen Sie "Aufgaben"> "Skripte generieren ...".
  3. Klicken Sie unter "Skriptoptionen festlegen" auf "Erweitert".
  4. Setzen Sie unter "Allgemein" "Datentypen auf Skript" auf "wahr" (sie befinden sich am Ende der Gruppe "Allgemein").
Cameron vorwärts
quelle
0

Wenn Sie dies programmgesteuert tun müssen, können Sie die SQL DMO-Bibliothek (OLE) für SQL Server 2000 verwenden. Wahrscheinlicher ist jedoch, dass Sie die SQL SMO-Bibliothek (native .NET-Bibliotheken) für SQL Server 2005 und höher verwenden möchten.

Beide Bibliotheken sind integraler Bestandteil der Installation der SQL Server-Verwaltungstools.

Dies ist der Fall, wenn das Generieren des vollständigen Datenbankskripts aus SQL Server Management Studio nicht ausreicht.

mehrsprachig
quelle