Datenbanken können recht groß und komplex werden – dafür sind leistungsfähige Datenbank-Systeme wie SQL Server ja da. Und weil ERP-Systeme und große Anwendungen gleich mal ein paar hundert bis tausend Tabellen beinhalten können, wurden die Datenbank-Diagramme erfunden, um Relationen zwischen den Tabellen grafisch abbilden zu können.
Erst mit der grafischen Darstellung kann sich ein Datenbank-Administrator und Entwickler ein (Teil-) Bild des Daten-Schemas machen – zu mindestens gilt das für mich. Ein kleines Datenbank-Diagramm in SQL Server kann zum Beispiel so aussehen:
Fesch. Nur, wie kann so ein Datenbank-Diagramm aus einer bestehenden Datenbank in eine andere Ziel-Datenbank übertragen werden? Gar nicht! Im Kontextmenü des SQL Servers findet sich dazu keine Möglichkeit.
Die einzige mir bekannte Möglichkeit war bislang das Kopieren der Datenbank und Nacharbeiten der Daten. “Nachzeichnen” stellt keine Option dar.
Jetzt habe ich aber aus aktueller Anforderung – die Diagramme sollten in eine neue Datenbank übertragen werden - einen brauchbaren Workaround zum Kopieren von Diagrammen in andere Datenbanken gefunden, und zwar auf codeplex.com Script SQL Server 2005 diagrams to a file von Craig Dunn. Eine sehr praktische Lösung.
Ab SQL Server 2005 werden Diagramme in [sysdiagrams] gespeichert. Diese Eigenschaft machen sich zwei kleine Stored Procedures zu nutze und können so ein bestimmtes Diagramm auslesen und scripten.
Hier die step-by-step Anleitung zum Scripten von Datenbank-Diagrammen (ab SQL Server 2005 lauffähig):
- Download der beiden Scripts von hier: Download source code (4.7KB).
- Das ZIP entpacken:
- Die beiden Stored Procedures aus dem ZIP müssen in der Quell-DB ausgeführt werden (SQL-Admin-Rechte erforderlich). Dazu einfach Doppelklick auf die SQL-Dateien, Quell-Datenbank auswählen und ausführen:
Es müssen beide SP´s erstellt werden. - Nun Aufrufen der SP Tool_ScriptDiagram2005 mit dem gewünschten Diagramm-Namen, z.B.:
exec Tool_ScriptDiagram2005 'dg_EDVGeraete' - Die Ausgabe erzeugt als Ausgabe (Messages) ein Script.
Dieses mit STRG + A markieren und mit STRG + C kopieren:
- In die Ziel-Datenbank wechseln (Neue Abfrage, use <meinedb>), das erzeugte Script mit STRG + V einfügen und mit F5 ausführen.
- Als Ergebnis – wenn alles klappt – erscheint das durch das Script neu erstellte Diagramm mit Datum und Uhrzeit im Namen – dieser kann natürlich wieder beliebig geändert werden. Tipp: Refresh des Diagramm-Knotens!
Fertig. Das Diagramm wurde gescriptet und neu in der Ziel-Datenbank erstellt.
Das coole Script hilft somit Aufwand zu minimieren und ermöglicht sehr einfach Datenbank-Diagramme in andere Datenbanken zu übernehmen. Für mich war´s wirklich praktisch, diesen Workaround zu verwenden, daher verdient das Script für mich eine “best practise”-Empfehlung.
Categories: General, Developer, Microsoft, Tools
Source: https://blog.atwork.at/post/SQL-Server-e28093-Datenbank-Diagramme-kopieren