Übersicht über Schemavergleiche

Gilt für: SQL Server Azure SQL-Datenbank Azure SQL Managed Instance

Mit dem Schemavergleichstool können Sie zwei Datenbankdefinitionen vergleichen, wobei die Quelle und das Ziel des Vergleichs eine beliebige Kombination aus verbundener Datenbank, SQL-Datenbankprojekt oder .dacpac-Datei sein kann. Sobald der Vergleich abgeschlossen ist, werden die Ergebnisse des Vergleichs als eine Reihe von Aktionen angezeigt, die das Ziel auf ähnliche Weise wie die Quelle als Quellcodeverwaltungs-Diff festlegen. Von einer Schemavergleichsschnittstelle aus können Sie das Ziel direkt aktualisieren (wenn das Ziel ein Projekt oder eine Datenbank ist) oder ein Updateskript generieren, das den gleichen Zweck erfüllt.

Screenshot der Unterschiede zwischen einem Paket und einer Datenbank als Konzept.

Schemavergleich bietet die folgenden Features:

  • Vergleichen Sie Schemas zwischen zwei dacpac-Dateien, Datenbanken oder SQL-Projekten.
  • Anzeigen von Ergebnissen als Aktionen, die für das Ziel durchgeführt werden müssen, damit dieses der Quelle entspricht
  • Selektives Ausschließen von in den Ergebnissen aufgeführten Aktionen
  • Festlegen von Optionen, die den Bereich des Vergleichs steuern
  • Anwenden von Änderungen direkt auf das Ziel oder Generieren eines Skripts für die Anwendung von Änderungen zu einem späteren Zeitpunkt.
  • Speichern des Vergleichs

Funktionalität

Die Unterschiede zwischen Quelle und Ziel werden zur einfachen Überprüfung in einem Raster angezeigt. Der Vergleich kann in beide Richtungen zwischen einem Datenbankmodell erfolgen, das von einem der folgenden Methoden abgeleitet ist:

  • verbundene Datenbank
  • SQL-Datenbankprojekt
  • .dacpac-Datei

Im Schemavergleich können Sie jeden Unterschied im Ergebnisraster oder in Skriptform überprüfen, in dem Details zu den Änderungen auf zeilenspezifischer Ebene verfügbar sind. Sie können auch selektiv bestimmte Unterschiede ausschließen, bevor Sie das Ziel aktualisieren. Das Tool zum Vergleichen des Schemas ist in Visual Studio, Azure Data Studio und der Befehlszeile verfügbar.

Schemavergleichsoptionen

Die Optionen für den Schemavergleich stammen aus den Bereitstellungsoptionen, die in der DacFx .NET-Bibliothek verfügbar sind. Die Optionen umfassen:

  • Whitespace ignorieren
  • Ignorieren von Partitionsschemas
  • Spaltenreihenfolge ignorieren
  • Indizes ablegen, die nicht in der Quelle enthalten sind
  • Blockierung möglicher Datenverluste

Die Objekttypen, die im Vergleich enthalten sind, können ebenfalls konfiguriert werden. Zu diesen Objekten gehören Tabellen, gespeicherte Prozeduren, Indizes, Berechtigungen, benutzerdefinierte Typen und vieles mehr.

Schemavergleichsdateien

Die Vergleichsdefinition für den Schemavergleich kann als .scmp-Datei gespeichert werden, die als Schemavergleichsdatei bezeichnet wird. Diese Datei speichert Informationen zum Schemavergleich in XML und enthält:

  • Quell- und Zielverbindungsinformationen
  • Vergleichsoptionen
  • Ausgeschlossene Objekttypen

Eine .scmp-Datei kann in Visual Studio oder Azure Data Studio geöffnet werden, um den gleichen Vergleich später erneut auszuführen oder den Vergleich mit Anderen zu teilen.

Starten und Verwenden des Schemavergleichs

  1. Wählen Sie im Menü Tools in Visual Studio SQL Server und dann Neuer Schemavergleich aus.

    Sie können auch im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt TradeDev klicken und Schemavergleich auswählen.

    Das Fenster Schemavergleich wird geöffnet, und Visual Studio weist diesem automatisch einen Namen zu, z.B. SqlSchemaCompare1.

    Direkt unter der Symbolleiste des Fensters Schemavergleich werden zwei Dropdownlistenmenüs angezeigt, zwischen denen sich ein grüner Pfeil befindet. In diesen Menüs können Sie Datenbankdefinitionen für die Quelle und das Ziel des Vergleichs auswählen.

  2. Wählen Sie in der Dropdownliste Quelle auswählen die Option Quelle auswählen aus. Das Dialogfeld Quellschema auswählen wird geöffnet.

    Wenn Sie das Fenster Schemavergleich durch Klicken mit der rechten Maustaste auf den Projektnamen geöffnet haben, ist das Quellschema bereits aufgefüllt, und Sie können mit Schritt 4 fortfahren.

    Screenshot des Dialogs zur Auswahl der Schemavergleichsquelle in Visual Studio.

  3. Schließen Sie die Auswahl für eine Schemavergleichsquelle ab, indem Sie eine Project-, Datenbankverbindungs- oder .dacpac-Datei auswählen. Die Quelle ist die Datenbankdefinition, die Sie als Grundlage für Änderungen am Ziel verwenden möchten.

  4. Wählen Sie in der Dropdownliste Ziel auswählen des Fensters Schemavergleich die Option Ziel auswählen aus. Daraufhin wird das Dialogfeld Zielschema auswählen geöffnet. Schließen Sie die Auswahl für eine Schemavergleichsziel ab, indem Sie eine Project-, Datenbankverbindungs- oder .dacpac-Datei auswählen. Das Ziel ist die Datenbankdefinition, die Sie auswerten und möglicherweise ändern möchten.

  5. Sie können auch auf der Symbolleiste des Fensters Schemavergleich die Schaltfläche Optionen auswählen, um die miteinander zu vergleichenden Objekte, die zu ignorierenden Unterschiede und weitere Einstellungen anzugeben.

  6. Wählen Sie auf der Symbolleiste des Fensters Schemavergleich die Schaltfläche Vergleichen aus, um den Vergleichsvorgang zu starten.

    Bei Abschluss des Vergleichs werden im oberen Teil des Fensters im Ergebnisbereich die strukturellen Unterschiede zwischen dem Projekt und der Datenbank angezeigt. In den Vergleichsergebnissen sind standardmäßig alle Unterschiede nach Aktion (z. B. "Löschen", "Ändern" oder "Hinzufügen") gruppiert. Im Ergebnisbereich wird eine Zeile für jedes Datenbankobjekt angezeigt, das sich in den Datenbankdefinitionen unterscheidet. In jeder Zeile werden das Objekt im Quell- oder Zielschema (oder in beiden Schemas) und die für das Zielschema auszuführende Aktion angegeben, durch die das Zielobjekt mit dem Quellobjekt identisch würde. Wenn ein Objekt umgestaltet und entweder umbenannt oder in ein neues Schema verschoben wurde, sind der Quell- und Zielname unterschiedlich, und der Quellname wird fett formatiert angezeigt, um den Unterschied hervorzuheben.

    Screenshot der Schemavergleichsschnittstelle in Visual Studio, die eine Datenbank mit einem Projekt vergleicht.

    Standardmäßig werden in der Ergebnisliste Objekte ausgeblendet, die in beiden Schemas gleich sind oder deren Update nicht unterstützt wird (z. B. integrierte Objekte). Sie können auf der Symbolleiste die entsprechenden Filterschaltflächen auswählen, um diese Objekte anzuzeigen.

    Um die Gruppierungseinstellung zu ändern, wählen Sie auf der Symbolleiste die Dropdownliste Ergebnisse gruppieren aus. Wählen Sie Typ aus, um die Ergebnisse nach Objekttyp (z.B. nach Tabellen, Sichten oder gespeicherten Prozeduren) zu gruppieren.

  7. Standardmäßig sind im Anwendungsbereich der Aktion "Ziel aktualisieren" alle Unterschiede enthalten. Sie können Unterschiede ausschließen, die nicht synchronisiert werden sollen. Hierzu deaktivieren Sie in der Mitte jeder Zeile die Spalte Aktion. Sie können auch im Bereich „Schema“ mit der rechten Maustaste auf eine Zeile klicken und Ausschließen auswählen. Die Zeile wird sofort ausgegraut. Beim Verwenden von Schemavergleich wird diese Zeile bei ausstehenden Änderungen nicht berücksichtigt.

    Sie können auch mit der rechten Maustaste auf eine Gruppenzeile klicken und Alle ausschließen oder Alle einschließen auswählen. Dies entspricht dem Markieren bzw. Aufheben der Markierung aller Unterschiede in der Gruppe. Wenn Sie Ergebnisse nach Schema gruppieren, empfiehlt sich dieses Verfahren, um alle Änderungen an einem bestimmten Schema einzuschließen oder auszuschließen.

    Wenn die ausgeschlossene Zeile über abhängige Objekte verfügt (z.B. eine Tabellen-Zeile, auf die von einer Sicht-Zeile verwiesen wird), wird die ausgeschlossene Zeile deaktiviert, jedoch nicht das zugehörige Kontrollkästchen. Wenn alle davon abhängigen Zeilen deaktiviert wurden, wird auch das Kontrollkästchen der deaktivierten Zeile deaktiviert. Wenn eine Zeile außerdem umgestaltet (umbenannt oder in ein anderes Schema verschoben) wird, werden das Kontrollkästchen für die Zeile und alle abhängigen untergeordneten Zeilen deaktiviert.

    Wenn Sie den Vergleich aktualisieren, werden diese zu überspringenden Unterschiede ignoriert.

Sie haben zwei Optionen zum Aktualisieren des Schemas der Zieldatenbank. Sie können das Ziel direkt über das Fenster Schemavergleich aktualisieren, wenn das Ziel eine Datenbank oder ein Projekt ist, oder Sie können ein Updateskript generieren, wenn das Ziel eine Datenbank oder Datenbankdatei ist. Ein generiertes Skript wird im Transact-SQL-Editor angezeigt. Dort können Sie das Skript untersuchen und für eine Datenbank ausführen.

Der grafische Schemavergleich ist in der Vorschau von SQL-Projekten im SDK-Stil in Visual Studio noch nicht verfügbar. Verwenden Sie Azure Data Studio, um Schemas zu vergleichen.

Hinweis

Der Schemavergleich ist in Visual Studio Code nicht verfügbar. Verwenden Sie Azure Data Studio oder Visual Studio, um Schemas zu vergleichen.

  1. Suchen Sie in Azure Data Studio in der Befehlspalette (ctrl/cmd+shift+P) und wählen Sie Schemavergleich aus.

    Klicken Sie alternativ in der Ansicht Datenbankprojekte oder in Objekt-Explorer mit der rechten Maustaste auf ein Datenbankprojekt, und wählen Sie Schemaabgleich aus.

    Screenshot des Menüelements „Schemavergleich“ im Azure Data Studio-Objekt-Explorer.

    Das Fenster Schemavergleich wird geöffnet, und eine Quelle oder ein Ziel kann basierend auf dem Startpunkt voreingestellt sein.

    Direkt unter der Symbolleiste des Fensters Schemavergleich werden zwei Tasten Auslassungspunkte mit einem Pfeil dazwischen angezeigt. In diesen Menüs können Sie Datenbankdefinitionen für die Quelle und das Ziel des Vergleichs auswählen.

  2. Wenn Sie die Schaltfläche mit den Auslassungspunkten für die Quelle oder das Ziel auswählen, wird ein Dialogfeld geöffnet, in dem eine oder beides aktualisiert werden kann. Schließen Sie die Auswahl für eine Schemavergleichsquelle ab, indem Sie eine Project-, Datenbankverbindungs- oder .dacpac-Datei auswählen. Die Quelle ist die Datenbankdefinition, die Sie als Grundlage für Änderungen am Ziel verwenden möchten. Das Ziel ist die Datenbankdefinition, die Sie auswerten und möglicherweise ändern möchten.

    Screenshot des Dialogs zur Auswahl der Schemavergleichsquelle in Azure Data Studio.

    Nachdem die Auswahl abgeschlossen ist, wählen Sie OK aus, um das Dialogfeld zu schließen und zum Fenster Schemavergleich zurückzukehren.

  3. Sie können auch auf der Symbolleiste des Fensters Schemavergleich die Schaltfläche Optionen auswählen, um die miteinander zu vergleichenden Objekte, die zu ignorierenden Unterschiede und weitere Einstellungen anzugeben.

  4. Wählen Sie auf der Symbolleiste des Fensters Schemavergleich die Schaltfläche Vergleichen aus, um den Vergleichsvorgang zu starten.

    Bei Abschluss des Vergleichs werden im oberen Teil des Fensters im Ergebnisbereich die strukturellen Unterschiede zwischen dem Projekt und der Datenbank angezeigt. In den Vergleichsergebnissen sind standardmäßig alle Unterschiede nach Aktion (z. B. "Löschen", "Ändern" oder "Hinzufügen") gruppiert. Im Ergebnisbereich wird eine Zeile für jedes Datenbankobjekt angezeigt, das sich in den Datenbankdefinitionen unterscheidet. In jeder Zeile werden das Objekt im Quell- oder Zielschema (oder in beiden Schemas) und die für das Zielschema auszuführende Aktion angegeben, durch die das Zielobjekt mit dem Quellobjekt identisch wird. Wenn ein Objekt umgestaltet und entweder umbenannt oder in ein neues Schema verschoben wurde, sind der Quell- und Zielname unterschiedlich, und der Quellname wird fett formatiert angezeigt, um den Unterschied hervorzuheben.

    Screenshot der Schemavergleichsschnittstelle in Azure Data Studio, die eine Datenbank mit einem Projekt vergleicht.

  5. Standardmäßig sind im Anwendungsbereich der Aktion "Ziel aktualisieren" alle Unterschiede enthalten. Sie können Unterschiede ausschließen, die nicht synchronisiert werden sollen. Hierzu deaktivieren Sie in der Mitte jeder Zeile die Spalte Aktion. Sie können auch im Bereich „Schema“ mit der rechten Maustaste auf eine Zeile klicken und Ausschließen auswählen. Die Zeile wird sofort ausgegraut. Beim Verwenden von Schemavergleich wird diese Zeile bei ausstehenden Änderungen nicht berücksichtigt.

    Sie können auch mit der rechten Maustaste auf eine Gruppenzeile klicken und Alle ausschließen oder Alle einschließen auswählen. Dies entspricht dem Markieren bzw. Aufheben der Markierung aller Unterschiede in der Gruppe. Wenn Sie Ergebnisse nach Schema gruppieren, empfiehlt sich dieses Verfahren, um alle Änderungen an einem bestimmten Schema einzuschließen oder auszuschließen.

    Wenn die ausgeschlossene Zeile über abhängige Objekte verfügt (z.B. eine Tabellen-Zeile, auf die von einer Sicht-Zeile verwiesen wird), wird die ausgeschlossene Zeile deaktiviert, jedoch nicht das zugehörige Kontrollkästchen. Wenn alle davon abhängigen Zeilen deaktiviert wurden, wird auch das Kontrollkästchen der deaktivierten Zeile deaktiviert. Wenn eine Zeile außerdem umgestaltet (umbenannt oder in ein anderes Schema verschoben) wird, werden das Kontrollkästchen für die Zeile und alle abhängigen untergeordneten Zeilen deaktiviert.

    Wenn Sie den Vergleich aktualisieren, werden diese zu überspringenden Unterschiede ignoriert.

Sie haben zwei Optionen zum Aktualisieren des Schemas der Zieldatenbank. Wenn es sich bei dem Ziel um eine Datenbank oder ein Projekt handelt, können Sie das Ziel direkt im Fenster Schemavergleich mit der Schaltfläche Anwenden aktualisieren. Wenn es sich bei dem Ziel um eine Datenbank handelt, können Sie mit der Schaltfläche Skript generieren ein Aktualisierungsskript generieren. Ein generiertes Skript wird im Transact-SQL-Editor angezeigt. Dort können Sie das Skript untersuchen und für eine Datenbank ausführen.

Für den Schemavergleich ist ein grafisches Tool wie Visual Studio oder Azure Data Studio erforderlich.