Ich möchte die Skriptgenerierung in SQL Server Management Studio 2008 automatisieren.
Im Moment mache ich:
- Klicken Sie mit der rechten Maustaste auf meine Datenbank, Aufgaben, "Skripte generieren ..."
- Wählen Sie manuell alle benötigten Exportoptionen aus und klicken Sie auf der Registerkarte "Objekt auswählen" auf "Alle auswählen"
- Wählen Sie den Exportordner
- Klicken Sie schließlich auf die Schaltfläche "Fertig stellen"
Gibt es eine Möglichkeit, diese Aufgabe zu automatisieren?
Bearbeiten: Ich möchte Erstellungsskripte generieren , keine Skripte ändern.
Antworten:
Was Brann in der Visual Studio 2008 SP1 Team Suite erwähnt, ist Version 1.4 des Datenbankveröffentlichungsassistenten. Es wird mit SQL Server 2008 (möglicherweise nur professionell?) Unter \ Programme \ Microsoft SQL Server \ 90 \ Tools \ Publishing \ 1.4 installiert. Der VS-Aufruf vom Server-Explorer ruft dies einfach auf. Sie können die gleiche Funktionalität über die Befehlszeile erreichen wie:
Ich weiß nicht, ob v1.4 dieselben Probleme hat wie v1.1 (Benutzer werden in Rollen konvertiert, Einschränkungen werden nicht in der richtigen Reihenfolge erstellt), aber es ist keine Lösung für mich, da keine Skriptobjekte erstellt werden auf verschiedene Dateien wie die Option Aufgaben-> Skripte generieren in SSMS. Ich verwende derzeit eine modifizierte Version von Scriptio (verwendet die MS SMO-API), um als verbesserter Ersatz für den Datenbankveröffentlichungsassistenten (sqlpubwiz.exe) zu fungieren. Es ist derzeit nicht über die Befehlszeile skriptfähig. Ich könnte diesen Beitrag in Zukunft hinzufügen.
Scriptio wurde ursprünglich auf Bill Grazianos Blog veröffentlicht, später jedoch von Bill für CodePlex veröffentlicht und von anderen aktualisiert. In der Diskussion erfahren Sie, wie Sie zur Verwendung mit SQL Server 2008 kompilieren.
http://scriptio.codeplex.com/
BEARBEITEN: Ich habe seitdem begonnen, das SQL Compare-Produkt von RedGate zu verwenden, um dies zu tun. Es ist ein sehr schöner Ersatz für alles, was der SQL Publishing-Assistent hätte sein sollen. Sie wählen eine Datenbank, ein Backup oder einen Snapshot als Quelle und einen Ordner als Ausgabespeicherort, und alles wird gut in eine Ordnerstruktur kopiert. Es ist zufällig dasselbe Format, das das andere Produkt, SQL Source Control, verwendet.
quelle
SqlPubwiz bietet im Vergleich zur Skriptgenerierung in SSMS nur sehr eingeschränkte Optionen. Im Gegensatz dazu stimmen die mit SMO verfügbaren Optionen fast genau mit denen in SSMS überein, was darauf hindeutet, dass es sich wahrscheinlich sogar um denselben Code handelt. (Ich würde hoffen, dass MS es nicht zweimal geschrieben hat!) Es gibt mehrere Beispiele auf MSDN wie dieses , die Skriptertabellen als einzelne Objekte zeigen. Wenn Sie jedoch möchten, dass alles korrekt mit einem 'vollständigen' Schema geschrieben wird, das 'DRI'-Objekte (Declarative Referential Integrity) wie Fremdschlüssel enthält, werden die Abhängigkeiten durch Skripten von Tabellen einzeln nicht korrekt ausgeführt. Ich fand es notwendig, alle URNs zu sammeln und sie als Array an den Scripter zu übergeben. Dieser Code, geändert aus dem Beispiel,
quelle
Microsoft.SqlServer.Management.SqlScriptPublish.ScriptPublishWizard
in der Assembly C: \ Programme (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ Microsoft.SqlServer.Management.SqlScriptPublishUI.dll anzeigen. Dies ist, was SSMS verwendet. (Alternativ können Sie sich die KlasseMicrosoft.SqlServer.Management.UI.GenerateScript
aus der Assembly C: \ Programme (x86) \ Microsoft SQL Server \ 110 \ Tools \ Binn \ ManagementStudio \ ReplicationDialog.dllIch 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 versionierungsfreundlicher. Es unterstützt die Skripterstellung von Schema und Daten.
So generieren Sie Skripte:
Um die Datenbank aus Skripten neu zu erstellen, führen Sie Folgendes aus:
quelle
Mit SQL Server Management Object (SMO) können Sie SQL Server 2005-Verwaltungsaufgaben automatisieren, einschließlich der Generierung von Skripten: http://msdn.microsoft.com/en-us/library/ms162169.aspx .
quelle
Wenn Sie ein Entwickler sind, entscheiden Sie sich auf jeden Fall für SMO. Hier ist ein Link zur Scripter-Klasse, die Ihr Ausgangspunkt ist:
Scripter-Klasse
quelle
Ich sehe keine Powershell mit SQLPSX, die in einer dieser Antworten erwähnt wird ... Ich persönlich habe nicht damit gespielt, aber es sieht sehr einfach aus und ist ideal für diese Art von Automatisierungsaufgaben geeignet, mit Aufgaben wie:
(Ref: http://www.sqlservercentral.com/Forums/Topic1167710-1550-1.aspx#bm1168100 )
Projektseite: http://sqlpsx.codeplex.com/
Der Hauptvorteil dieses Ansatzes besteht darin, dass er die Konfigurierbarkeit / Anpassbarkeit der direkten Verwendung von SMO mit der Bequemlichkeit und Wartbarkeit der Verwendung eines einfachen vorhandenen Tools wie dem Datenbankveröffentlichungsassistenten kombiniert.
quelle
Unter Extras> Optionen> Designer> Tabellen- und Datenbankdesigner gibt es eine Option für "Änderungsskripte automatisch generieren", die für jede Änderung, die Sie zum Zeitpunkt des Speicherns vornehmen, eine generiert.
quelle
Sie können dies mit T-SQL-Code mithilfe der Tabellen INFORMATION_SCHEMA tun.
Es gibt auch Tools von Drittanbietern - ich mag Apex SQL Script genau für die Verwendung, über die Sie sprechen. Ich führe es komplett über die Kommandozeile aus.
quelle
Probieren Sie neue SQL Server-Befehlszeilentools aus, um T-SQL-Skripts zu generieren und dynamische Verwaltungsansichten zu überwachen.
Arbeitete für mich wie Charme. Es ist ein neues Python-basiertes Tool von Microsoft, das über die Befehlszeile ausgeführt wird. Alles funktioniert wie auf der Microsoft-Seite beschrieben (siehe Link unten). Hat bei mir mit SQL 2012 Server funktioniert.
Sie installieren es mit pip:
Befehlsparameterübersicht wie gewohnt mit h zur Hilfe:
Tipp: Wenn Sie sich über die Windows-Authentifizierung bei SQL-Server anmelden, lassen Sie einfach Benutzername und Kennwort weg.
https://cloudblogs.microsoft.com/sqlserver/2017/05/17/try-new-sql-server-command-line-tools-to-generate-t-sql-scripts-and-monitor-dynamic-management- Ansichten /
quelle
Wenn Sie eine Microsoft-Lösung wünschen, können Sie Folgendes versuchen: Microsoft SQL Server Database Publishing Wizard 1.1
http://www.microsoft.com/downloads/details.aspx?FamilyId=56E5B1C5-BF17-42E0-A410-371A838E570A&displaylang=de
Es wird ein Stapelprozess erstellt, den Sie jederzeit ausführen können, wenn Sie die Skripte neu erstellen müssen.
quelle
Ich habe DB Comparer verwendet - Es ist ein kostenloses und unkompliziertes Skript für die gesamte Datenbank und kann mit einer anderen Datenbank verglichen werden und auch ein Diff-Skript erstellen. Hervorragend geeignet für Skripte zur Änderung der Entwicklung zur Produktion. http://www.dbcomparer.com/
quelle
Es gibt auch dieses einfache Befehlszeilentool, das ich für meine Bedürfnisse erstellt habe.
http://mycodepad.wordpress.com/2013/11/18/export-ms-sql-database-schema-with-c/
Es kann eine ganze Datenbank exportieren und versucht, verschlüsselte Objekte zu exportieren. Alles wird in Ordnern und separaten SQL-Dateien für einen einfachen Dateivergleich gespeichert.
Code ist auch auf Github verfügbar.
quelle
Aus Visual Studio 2008 SP1 TeamSuite:
Auf der Registerkarte "Server-Explorer / Datenverbindungen" befindet sich ein Tool zum Veröffentlichen auf dem Anbieter, das mit dem "Microsoft SQL Server-Datenbankveröffentlichungsassistenten" identisch ist, jedoch mit MS SQL Server 2008 kompatibel ist.
quelle
Ich verwende VS 2012 (für DBs unter MSSQL Server 2008). Die Vergleichsdatenbank hat eine Option zum Speichern, den Vergleich und Optionen. Dies sind im Wesentlichen Ihre Einstellungen für die Lieferung. Danach können Sie ein Skript aktualisieren oder generieren.
Ich finde es nur etwas umständlich, es später aus einer Datei zu laden (Drag & Drop aus dem Windows Explorer), da ich die Datei im Solution Explorer nicht sehe.
quelle