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 Dutzend bis tausende 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:

sql-diagramm-1

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.

sql-diagramm-2

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):

  1. Download der beiden Scripts von hier: Download source code (4.7KB).
  2. Das ZIP entpacken:
    sql-diagramm-3
  3. 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:
    sql-diagramm-4
    Es müssen beide SP´s erstellt werden.
  4. Nun Aufrufen der SP Tool_ScriptDiagram2005 mit dem gewünschten Diagramm-Namen, z.B.:
    exec Tool_ScriptDiagram2005 'dg_EDVGeraete'
  5. Die Ausgabe erzeugt als Ausgabe (Messages) ein Script.
    Dieses mit STRG + A markieren und mit STRG + C kopieren:
     sql-diagramm-5
  6. In die Ziel-Datenbank wechseln (Neue Abfrage, use <meinedb>), das erzeugte Script mit STRG + V einfügen und mit F5 ausführen.
  7. 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!
    sql-diagramm-6
    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 ein Workaround mit “best practise”-Empfehlung.

Beitrag von Toni Pohl