Kostenlose Software zum Reverse Engineering bestehender komplexer Datenbankdiagramme in SQL Server 2008+

Bis vor ein paar Jahren habe ich Microsoft Visio verwendet, um eine vorhandene Datenbank in ein Diagramm zurückzuentwickeln. Diese Funktion ist seit einiger Zeit veraltet , und ich stecke ziemlich fest, um eine Alternative zu finden.

Anforderungen

Die FAQ für diese neue SE-Site weisen mich an, die Anforderungen genau zu beschreiben, also werde ich mein Bestes geben. Die meisten dieser Anforderungen waren in Visio enthalten, jedoch nicht alle. Ich denke, es ist nicht machbar, eine Software zu finden, die alle hat, aber ich würde gerne näher kommen.

Wichtig:

  • SQL Server 2012- Datenbanken;

  • Reverse Engineering-Tabellen mit allen Spalten und Primär-/Fremdschlüsselangaben;

  • Reverse Engineering von Fremdschlüsseln als Verbindungsstücke zwischen Tabellen;

  • Manuelles Layout von Boxen und Anschlüssen (ich möchte Dinge visuell gruppieren);

  • Grundlegende Themen : Wählen Sie Hintergrundfarben für Tabellen;

  • Kann komplexe Modelle handhaben, z. B. 100+ Tabellen ;

  • Kann auswählen, welche Elemente angezeigt werden sollen oder nicht (z. B. bestimmte Tabellen auslassen usw.);

  • Mindestens eine kostenlose Testversion verfügbar;

  • Exportieren in verschiedene Formate für Verteilungs- und Druckzwecke, am meisten bevorzugt ist PDF, PNG würde ich auch tun, denke ich;

  • WYSIWYG ;

Wichtigste Bonuspunkte:

  • Läuft unter Windows 8 (obwohl ich eine Linux-VM für Software installieren würde, die alle wichtigen Anforderungen erfüllt)

  • Automatisches Layout und Connector-Routing zur Minimierung von Überlappungen;

  • Kann SQL Server 2008 und 2008R2 ausführen ;

  • Kann Ansichten zurückentwickeln ;

  • Kostenlos (oder eine kostenlose Version );

  • Inkrementelles Update , z. B. erneutes Reverse Engineering und Hinzufügen/Entfernen von Tabellen usw., während Design, vorhandenes Layout usw. beibehalten werden.

  • Hübsche Diagramme (modernes Erscheinungsbild, Anti-Aliasing, Auswahl an Schriftarten, Farben, Farbverläufen, Schlagschatten, Themen usw.);

  • Freundliche Lernkurve (ich kann mit vielen komplexen Funktionen umgehen, solange es einfach ist, die Grundlagen schnell zu erledigen);

HABEN MÜSSEN:

  • Der Installer installiert nicht heimlich Symbolleisten in meinem Browser oder ändert meine Homepage! ;-)

Meine Forschung

Natürlich wurde diese Frage schon einmal gestellt, sogar auf Schwesterseiten (mit einigem Erfolg, obwohl sie dort nicht zum Thema gehören). Hier sind ein paar:

Und etwas ähnlich von DBA.SE:

Darüber hinaus hat Wikipedia eine Tabelle, in der mehrere Softwarepakete für die Funktion "Reverse Engineering" verglichen werden:

Versucht

Dies sind die Dinge, die ich im Vorbeigehen versucht habe:

  • Visio 2003 (das habe ich früher verwendet). Nicht kostenlos, veraltet, aber ansonsten für die meisten Punkte geeignet. Allerdings keine Option mehr.

  • Visio 2010 und 2013 (das habe ich derzeit). Reverse Engineering wird nicht mehr unterstützt. Ich habe jedoch überlegt, ein Plugin zu schreiben oder VBA zu verwenden, um Dinge zusammenzuhacken. Ich bin mir nicht sicher, wie hart das wäre. Es ist nicht kostenlos (außer ich nehme an, dass ich es persönlich bereits habe), aber es passt in vielen anderen Punkten auf die Rechnung.

  • Graphviz . Ich habe das vor einiger Zeit versucht, soweit ich mich erinnere, hatte es eine etwas steile Lernkurve und ich war nicht ganz in der Lage, das endgültige Layout manuell zu bestimmen.

  • SSMS- Diagramme. Dies funktioniert bei kleinen Fällen, kann aber bei größeren Fällen umständlich sein.

  • Visual Studio 2012 ADO.NET-Entitätsdatenmodell. Das manuelle Layout von Konnektoren ist begrenzt, Themen gibt es überhaupt nicht, es ist wirklich für einen anderen Zweck als die Dokumentation gedacht und es zeigt (z. B. erhalten Sie standardmäßig "Navigationseigenschaften" usw.), und es funktioniert nicht gut für 100+ Tische. Dies kann für kleinere Szenarien nützlich sein, passt aber nicht zur Rechnung für mich.

Und ich glaube, ich habe vielleicht ein paar Vorschläge aus den SO-Threads ausprobiert, obwohl ich mich nicht wirklich an Einzelheiten erinnern kann.

Also: was würdet ihr empfehlen?

Antworten (8)

Hier ist eine Empfehlung, die ich letztendlich verwendet habe (nach viel mehr Recherche und dem Ausprobieren vieler verschiedener Optionen):

Verwenden Sie dazu einfaches Visio.

Hier ist der Grund.

Erläuterung zu diesem Ansatz:

Es gibt kein Tool, das alle genannten Anforderungen bequem erfüllt, nicht einmal eines, das nur die Hauptanforderungen erfüllt. Visual Studio 2012 kommt dem nahe, hat aber keine Designunterstützung und funktionierte bei einer großen Anzahl von Tabellen nicht sehr gut.

Folgender Ablauf hat bei mir funktioniert:

  1. Erstellen Sie eine leere Vorlage für Visio-Flussdiagramm 1 . Wählen Sie ein Design, das Ihnen gefällt. Stellen Sie die Seiten- und Druckgrößen nach Ihren Wünschen ein (ich habe das A3-Querformat und das Design "Linear" gewählt).

  2. Öffnen Sie eine Abfrage 2 in SSMS auf der Seite, um die Details zu erhalten, die Sie später benötigen: Tabellen, Spaltennamen und IS NULLInformationen.

  3. Beginnen Sie, die Tabellen einzeln hinzuzufügen. Wählen Sie manuell aus, welche Tabellen und Spalten Sie einbeziehen möchten.

Dies ist ein Beispiel dafür, wie das Endergebnis aussieht:

Beispiel vergrößert

Oder ein verkleinerter Screenshot des gesamten Modells (weil es Handarbeit war, habe ich mich entschieden, deutlich weniger als alle über 100 Tabellen aufzunehmen):

verkleinertes Beispiel

Das Verfahren, das ich verwendet habe, um die "Tabellen" so aussehen zu lassen, wie sie aussehen:

  • Überschriften sind fett und haben eine größere Schriftgröße.
  • Trennzeichen sind keine Linien, sondern nur eine Reihe fetter Striche hintereinander.
  • Vier "Abschnitte": Tabellenname, Primärschlüssel, Fremdschlüssel, einfache Spalten.
  • Fett für NOT NULLSpalten.
  • Weiß für TableName und Trennzeichen, schwarz für Spaltennamen.

Außerdem habe ich mich für Fremdschlüssel entschieden für:

  • Lassen Sie niemals Kreuzverbindungen zu und erstellen Sie stattdessen kleine "Referenzblöcke", die auf eine Tabelle verweisen, die sich irgendwo auf der anderen Seite des Modells befindet.
  • Nicht alle Tabellen einbeziehen (dh es gibt mehr Fremdschlüssel als Konnektoren).

Hoffentlich ist das Obige auch für andere von Nutzen.

Anforderungen aus der Frage:

Unterm Strich empfehle ich diesen Ansatz, vor allem, weil Sie am Ende ein optisch ansprechendes Modell und ein hohes Maß an Kontrolle erhalten. Dieser Ansatz passt jedoch nicht zur gesamten Rechnung. So hält es den Anforderungen stand:

Datenkonnektivität:

  • SQL Server 2012-Datenbanken
  • Reverse Engineering-Tabellen mit allen Spalten und Primär-/Fremdschlüsselangaben
  • Reverse Engineering von Fremdschlüsseln als Verbindungsstücke zwischen Tabellen

± Dies ist alles möglich , aber nicht automatisiert. Also "mehr oder weniger".

Steuerung und Visualisierung:

  • Manuelles Layout, grundlegende Themen, Auswahl der anzuzeigenden Elemente
  • Kann komplexe Modelle handhaben, z. B. 100+ Tabellen

Ja, das alles funktioniert sehr gut mit einfachem Visio.

Geld:

  • Mindestens eine kostenlose Testversion verfügbar

✓ AFAIK , es ist eine kostenlose Office-Testversion verfügbar. Ich habe mich aber nicht damit befasst, da ich Visio habe.

Sonstiges:

  • Exportieren in verschiedene Formate
  • WYSIWYG;

Ja, dies ist in Visio verfügbar.

Bonuspunkte:

Es hat etwa die Hälfte der Bonuspunkte:

  • läuft auf Windows 8
  • SQL 2008 wird ebenfalls unterstützt
  • hübsch
  • freundliche Lernkurve

1. Ich habe auch die UML-Vorlage und Formen ausprobiert, aber das hat ein ärgerliches Verhalten für das Connector-Routing . Nicht empfohlen!

2. Das war meine Anfrage:

  SELECT  t.name TableName,
          c.name ColumnName,
          CASE WHEN c.is_nullable = 1 THEN '' ELSE 'BOLD' END AS IsNotNullable
  FROM    sys.tables AS t
          JOIN sys.columns AS c ON t.object_id = c.object_id
  WHERE   c.name NOT IN ('Excluded1', 'Excluded2')
  ORDER BY t.name,
          CASE WHEN c.name = t.name + 'Id' THEN 0
               WHEN c.name LIKE '%Id' THEN 1
               ELSE 2
          END,
          c.column_id
Wie sind Sie beim "Hinzufügen" der Tabellen aus Abfragen in SSMS vorgegangen? Hat Visio eine Möglichkeit, eine Abfrage zu akzeptieren? Wollen Sie damit sagen, dass Sie das Diagramm nur manuell erstellt haben?
@webworm Ja, mein Wunsch nach viel Kontrolle und einem optisch ansprechenden Ergebnis hat mich doch dazu getrieben, auf Handarbeit zurückzugreifen, muss ich (etwas beschämend) zugeben. Die Vollversion (aus dem Miniaturbild) hat mich insgesamt etwa 3 Stunden Arbeit gekostet. Es auf dem neuesten Stand zu halten, dauert etwa 10 Minuten pro 4-wöchigem Sprint. Der größte Nachteil ist nicht die Arbeit, sondern die Möglichkeit menschlicher Fehler (sprich: Fehler beim Kopieren/Einfügen). Bis jemand eine gute Alternative findet (sehr willkommen!), werde ich wahrscheinlich bei dieser "Lösung" bleiben.
Es scheitert an der Reverse engineer tablesAnforderung. Wenn man bereit ist, manuell umzukehren, funktioniert PowerPoint genauso gut.
@sixtytrees Weshalb ich es ±in meinem Überblick gegeben habe: "irgendwie möglich, aber nicht automatisiert". Außerdem denke ich, dass " Powerpoint funktioniert genauso gut " nicht trivial aus der Prämisse folgt ...
PS. Seien Sie jedoch versichert, dass ich nicht glücklich darüber war , dass Visio die am wenigsten schlechte Option ist.
Tatsächlich gehört Ihr Vorschlag zu den besten. Überraschenderweise gibt es kein Tool, das Links zuverlässig zurückentwickeln kann.

SQL Power Architect-Logo

Sehen Sie sich SQL Power Architect an . Es kann eine Verbindung zu ziemlich vielen Datenbanken herstellen, für die Sie einen JDBC-Connector konfigurieren können, und es kann das gesamte Reverse Engineering durchführen, nach dem Sie suchen. Ich handhabe jedoch nur grundlegende Datentypen, also müssen Sie Dinge wie DATETIME in DATE konvertieren, wenn Sie sie importieren.

Sie können die „Tabellenfarbe“ ändern, aber in Wahrheit ändert das wirklich die Farbe des Namens/der Kopfzeile der Tabelle, anstatt die Hintergrundfarbe für die gesamte Tabelle zu ändern.

Screenshot von SQL Power Architect: Eröffnungsbildschirm

Screenshot von SQL Power Architect: Entity-Relationship-Diagramm

SchemaCrawler ist ein kostenloses Open-Source-Datenbankerkennungstool, mit dem Sie Ihre vorhandene Datenbank zurückentwickeln können.

Wichtig:

  • SQL Server 2012-Datenbanken – SchemaCrawler funktioniert mit SQL Server 2012-Datenbanken
  • Reverse Engineering von Tabellen mit allen Spalten und Primär-/Fremdschlüsselangaben – SchemaCrawler erstellt Diagramme mit allen Spalten und Fremdschlüsseln
  • Reverse Engineering von Fremdschlüsseln als Konnektoren zwischen Tabellen SchemaCrawler erstellt Diagramme mit allen Spalten und Fremdschlüsseln
  • Manuelles Layout von Boxen und Konnektoren (ich möchte Dinge visuell gruppieren) - SchemaCrawler kann auch GraphViz DOT-Ausgaben generieren, und Sie können ein anderes Tool zur Feinabstimmung des Layouts verwenden
  • Grundlegende Themen: Wählen Sie Hintergrundfarben für Tabellen – SchemaCrawler kann auch GraphViz DOT-Ausgaben generieren, und Sie können ein anderes Tool verwenden, um das Layout zu optimieren
  • Kann komplexe Modelle verarbeiten, z. B. 100+ Tabellen - SchemaCrawler kann eine große Anzahl von Tabellen verarbeiten - noch besser, Sie können Suchkriterien für reguläre Ausdrücke angeben, um mehrere Diagramme von Teilmengen Ihres Schemas zu erstellen
  • Kann auswählen, welche Elemente angezeigt werden sollen oder nicht (z. B. bestimmte Tabellen weglassen usw.) - SchemaCrawler ermöglicht es Ihnen, Suchkriterien für reguläre Ausdrücke bereitzustellen, um mehrere Diagramme von Teilmengen Ihres Schemas zu erstellen
  • Mindestens eine kostenlose Testversion verfügbar - SchemaCrawler ist Open Source und kostenlos
  • Exportieren in verschiedene Formate zum Verteilen und Drucken, am bevorzugtesten ist PDF, PNG würde meiner Meinung nach auch reichen - SchemaCrawler ist Open Source und kostenlos
  • WYSIWYG - SchemaCrawler ist eine Befehlszeile

Wichtigste Bonuspunkte:

  • Läuft auf Windows 8 (obwohl ich eine Linux-VM für Software installieren würde, die alle wichtigen Anforderungen erfüllt) - SchemaCrawler ist plattformübergreifend
  • Automatisches Layout und Connector-Routing zur Minimierung von Überschneidungen – SchemaCrawler führt automatische Layouts mit GraphViz hinter den Kulissen durch
  • Kann SQL Server 2008 und 2008R2 ausführen - SchemaCrawler unterstützt alle Versionen von SQL Server
  • Kann Ansichten zurückentwickeln – SQL Server kann Ansichten zurückentwickeln
  • Kostenlos (oder eine kostenlose Version) - SchemaCrawler ist Open Source und kostenlos
  • Inkrementelle Aktualisierung, z. B. erneutes Reverse Engineering und Hinzufügen/Entfernen von Tabellen usw., während Design, vorhandenes Layout usw. beibehalten werden. - Speichern Sie Ihren SchemaCrawler -Befehlszeilenbefehl und führen Sie ihn erneut aus
  • Hübsche Diagramme (modernes Erscheinungsbild, Anti-Aliasing, Auswahl an Schriftarten, Farben, Farbverläufen, Schlagschatten, Themen usw.) - Einige Beispiele von der SchemaCrawler-Website
  • Freundliche Lernkurve (Ich kann mit vielen komplexen Funktionen umgehen, solange es einfach ist, die Grundlagen schnell zu erledigen) _ Hängt von Ihnen ab :-)

HABEN MÜSSEN:

  • Der Installer installiert nicht heimlich Symbolleisten in meinem Browser oder ändert meine Homepage! ;-) - SchemaCrawler hat keinen Installer - entpacken und ausführen

Sualeh Fatehi, SchemaCrawler

Vielen Dank für Ihre Antwort und schön zu hören, dass Sie Ihre Lösung als Open Source bereitgestellt haben. Ich bin nicht mehr wirklich in der Lage zu beurteilen, ob diese Antwort damals leider funktioniert hätte. - PS. Es wäre freundlich, Ihre Signatur (die normalerweise bei Stack Exchange nicht benötigt wird, da Ihr Name auch unten rechts steht) in eine explizite Offenlegung umzuwandeln .
Würdest du es weiterempfehlen? Wie verhält es sich mit den Anforderungen in meiner Frage?
Ich habe es nicht hinbekommen richtig zu installieren. Aber ich habe es bei der Arbeit versucht – bei der Arbeit ist es immer anders. Ich werde aktualisieren, nachdem ich mir die Zeit genommen habe, mit den Systemadministratoren daran zu arbeiten. Wenn das OP mit Visio 2010 zufrieden war, sollten sie damit zufrieden sein. Es sieht so aus, als wäre es dasselbe.
Ich bin der OP :-). Visio 2010 war für seine Zeit okay, obwohl Sie 7+ Jahre später auf etwas Besseres hoffen würden. Der Grund, warum ich den obigen Kommentar gepostet habe, ist, dass eine Antwort für mich und andere viel mehr wert ist, wenn sie die Anforderungen herunterfährt und erklärt, wie sie sich gegen sie schlägt.

Ich hatte nur die gleichen Anforderungen wie die ursprüngliche Frage, aber Visio hatte bereits einen Vorteil für unsere Wahl, da die ERD-Diagramme bereits 2007 per Reverse-Engineering generiert wurden.

Da wir bereits ein Office 365-Abonnement haben, wurde Visio Pro hinzugefügt, das mir Visio 16 (veröffentlicht Ende 2015) bescherte. Dann installierten wir das Datenbankmodellierungs -Add-In für Visio, um unsere Datenbank zurückzuentwickeln.

Ich habe das Add-In verwendet, um mit einem ODBC-Treiber eine Verbindung zu einer SQL Server (2019)-Datenbank herzustellen (aber es hat mehr Optionen, um Treiber und Server wie Oracle oder SQL Server Native usw. auszuwählen).

  • Schema importiert,
  • SQL Server 2012-Datenbanken – Ja (getestet mit SQL Server 2019)
  • Reverse Engineering-Tabellen mit allen Spalten und Primär-/Fremdschlüsselangaben - Ja
  • Reverse Engineering von Fremdschlüsseln als Verbindungsstücke zwischen Tabellen – Ja , einschließlich stark und schwach
  • Manuelles Layout von Boxen und Anschlüssen (ich möchte Dinge visuell gruppieren) - Ja
  • Grundlegende Themen: Wählen Sie Hintergrundfarben für Tabellen - Ja
  • Kann mit komplexen Modellen umgehen, z. B. über 100 Tabellen - Ja , gibt eine Warnung aus, importiert und angeordnet werden sie jedoch weiterhin in Ordnung.
  • Kann auswählen, welche Elemente angezeigt werden sollen oder nicht (z. B. bestimmte Tabellen auslassen usw.) - Ja
  • Mindestens eine kostenlose Testversion verfügbar - Nein
  • Exportieren in verschiedene Formate für Verteilungs- und Druckzwecke, am meisten bevorzugt ist PDF, PNG würde ich auch tun, denke ich - Ja
  • WYSIWYG – Ja

PS : Wenn ich anfangen würde, ohne jeglichen Vorteil/Präferenz für Visio, wie oben erwähnt, würde ich wahrscheinlich dbdiagram.io wählen

Ihre Anforderungsliste wird vollständig von Lucidchart abgedeckt . Nun, es ist nicht kostenlos, aber es gibt eine kostenlose Testversion.

Mit Lucidchart führen Sie eine von ihnen angegebene Abfrage aus und importieren dann die Abfrageergebnisse. Dadurch wird eine Sammlung von Tabellen erstellt, die Sie wie Schablonenformen auf ein Diagramm ziehen können. Lucidchart zeichnet die Verbindungen zwischen den Schlüsseln der von Ihnen ausgewählten Tabellen. Sie können die Tabellen und Verbindungen neu anordnen, Felder entfernen, Farben und Schriftarten ändern usw. Soweit ich das beurteilen kann, sparen Sie 90 % der Zeit, die für das Handzeichnen in neueren Versionen von Visio erforderlich ist, und Sie erhalten die meiste Zeit Flexibilität bei der Formatierung. Und keine Angst vor Tippfehlern. Der Nachteil ist, dass dies keine Live-Verbindung zu Ihrer Datenbank ist, sodass Sie zum Aktualisieren etwas manuelle Arbeit leisten müssen.

Sie können in verschiedene Grafikformate (PNG, PDF, JPG) und nach Visio (VDX) exportieren.

Betrachten Sie SQL Server Management Studio (SSMS).

Gehen Sie zu Datenbank -> Datenbankdiagramme -> Rechtsklick -> Neues Diagramm hinzufügen -> Fügen Sie die gewünschten Tabellen für Ihr ERD hinzu.

Vorteile :
Kommt mit SSMS, kann Spaltennamen extrahieren und schön anzeigen.
Nachteile:
Fehlt verknüpfte Schlüssel.

Beachten Sie, dass keines der oben aufgeführten kostenlosen oder getesteten Tools verknüpfte Schlüssel für meine Datenbank erfasst hat.

Try 
Apex SQL Model
Free: 
https://www.apexsql.com/sql-tools-model.aspx

with: 

Forward and reverse engineer
Customize the appearance of models
Create new or modify existing object groups
Navigate through model history
Export database models as images
Customize print output