Freigeben über


Übersicht über Schemavergleiche

Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed InstanceSQL-Datenbank in Microsoft Fabric

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 die gleiche Weise wie die Quelle festlegen. Unterschiede zwischen den Datenbankmodellen werden auf ähnliche Weise wie ein Quellcodeverwaltungs-Diff dargestellt. Wenn das Schemaabgleichsziel ein SQL-Projekt oder eine Datenbank ist, können Sie das Ziel direkt über die Schemaabgleichsschnittstelle aktualisieren oder ein Updateskript generieren, das denselben Effekt hat.

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.
  • Zeigen Sie die Ergebnisse als Reihe von Aktionen an, um ein Ziel mit der Quelle abzugleichen.
  • Selektives Ausschließen von in den Ergebnissen aufgeführten Aktionen
  • Festlegen von Optionen, die den Bereich des Vergleichs steuern
  • Wenden Sie Änderungen direkt auf das Ziel an, oder generieren Sie ein Skript, um Änderungen zu einem späteren Zeitpunkt anzuwenden.
  • 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 einer der folgenden Optionen abgeleitet wird:

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

Im Schemavergleich können Sie einen Drilldown ausführen und jeden Unterschied im Ergebnisraster oder in Skriptform überprüfen, in dem Details der Ä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
  • Partitionierungsschemata ignorieren
  • Spaltenreihenfolge ignorieren
  • Indizes löschen, 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.

    Alternativ können Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt TradeDev klicken und Schema vergleichen 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. Vervollständigen Sie die Auswahl für ein Ziel für den Schemavergleich, indem Sie ein Projekt, eine Datenbankverbindung oder eine .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. Die Vergleichsergebnisse gruppieren alle Unterschiede nach Aktion (z. B. Löschen, Ändern oder Hinzufügen) standardmäßig. 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. Wenn der Schemavergleich verwendet wird, um die Zieldatenbank zu aktualisieren, 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, ist das Klicken mit der rechten Maustaste auf die Gruppenzeile eine nützliche Möglichkeit, alle Änderungen in ein bestimmtes 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 Unterschiede, die Sie überspringen möchten, ignoriert.

Sie haben zwei Optionen zum Aktualisieren des Schemas des Ziels. 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.

Hinweis

Der grafische Schemavergleich ist teilweise in der Vorschau von SQL-Projekten im SDK-Stil in Visual Studio verfügbar. Schemavergleiche sind für verbundene Datenbanken und .dacpac Dateien verfügbar, SQL-Datenbankprojekte sind noch nicht verfügbar.

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

    Alternativ können Sie im Projektmappen-Explorer mit der rechten Maustaste auf das Projekt TradeDev klicken und Schema vergleichen 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. Vervollständigen Sie die Auswahl für ein Ziel für den Schemavergleich, indem Sie ein Projekt, eine Datenbankverbindung oder eine .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. Wenn der Schemavergleich verwendet wird, um die Zieldatenbank zu aktualisieren, 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 des Ziels. 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.

Ausführlichere Informationen zum Schemavergleich in Visual Studio Code finden Sie im Artikel Schema Compare (Vorschau)

  1. Suchen Sie in Visual Studio Code in der Befehlspalette (ctrl/cmd+shift+P), und wählen Sie MSSQL: Schema Compare (Vorschau) 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

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

    Zwei Schaltflächen mit Auslassungspunkten mit einem Pfeil dazwischen werden direkt unterhalb der Symbolleiste des Fensters Schemavergleich 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 die einzelnen Elemente aktualisiert werden können. 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 Dialogfelds zum Auswählen der Schemavergleichsquelle in Visual Studio Code.

    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 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 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. Wenn der Schemaabgleich verwendet wird, um die Zieldatenbank zu aktualisieren, wird diese Zeile nicht für ausstehende Änderungen berücksichtigt.

    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 des Ziels. 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.