Freigeben über


Vergleichen und Synchronisieren von Datenbankschemas

Dieses Thema gilt für folgende Anwendungsbereiche:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual Studio Express

Thema ist vorhanden Thema ist vorhanden Thema ist nicht vorhanden Thema ist nicht vorhanden

In Visual Studio Premium oder Visual Studio Ultimate können Sie ein Zielschema mit einem Quellschema vergleichen. Für jeden Unterschied können Sie angeben, ob das Ziel aktualisiert werden soll, sodass sie mit der Quelle übereinstimmt. Diese Aktualisierungen können Sie direkt in das Ziel schreiben oder aber das Updateskript in den Transact-SQL-Editor oder eine Datei exportieren. Sie können auch die Vergleiche als Teil des Datenbankprojekts oder als eigenständige Datei speichern. Durch Speichern der Vergleiche können Sie diese leichter wiederholen oder die gleiche Quelle mit dem Ziel erneut synchronisieren.

Typen von Schemavergleichen

Sie können die folgenden Entitäten vergleichen, die Definitionen von Datenbankschemas enthalten:

  • SQL Server-Datenbank – eine Datenbank, die in einer Instanz von SQL Server 2008 oder SQL Server 2005 ausgeführt wird

  • Datenbankprojekt – ein Projekt mit Definitionen für eine SQL Server 2008- oder SQL Server 2005-Datenbank, das beim Build eine DBSCHEMA-Datei erzeugt

  • Serverprojekt – ein Projekt mit Definitionen für Serverobjekte und Objekte in der 'Master'-Datenbank auf einem SQL Server 2008- oder SQL Server 2005-Server, das beim Build eine DBSCHEMA-Datei erzeugt

  • DAC-Projekt (Data-Tier Application Component, Anwendungskomponente auf Datenebene) – ein Projekt, das beim Build eine DACPAC-Datei erzeugt

  • DBSCHEMA-Datei – die Ausgabe beim Build einer Datenbank oder eines Serverprojekts

  • DACPAC-Datei – die Ausgabe beim Build eines DAC-Projekts (Data-Tier Application Component, Anwendungskomponente auf Datenebene, DAC)

In der folgenden Tabelle sind die vergleichbaren Typen von Schemas aufgeführt, und es ist angegeben, ob Sie Aktualisierungen in das Ziel schreiben können:

Quelle vertikal,

Ziel horizontal

SQL Server-Datenbank

Datenbankprojekt

DBSCHEMA-Datei

Serverprojekt

DAC-Projekt

DACPAC-Datei

SQL Server-Datenbank

Vergleichen und Aktualisieren

Vergleichen und Aktualisieren

Compare

Vergleichen und Aktualisieren

Compare

Compare

Datenbankprojekt

Vergleichen und Aktualisieren

Vergleichen und Aktualisieren

Compare

Keine

Keine

Keine

DBSCHEMA-Datei

Vergleichen und Aktualisieren

Vergleichen und Aktualisieren

Compare

Vergleichen und Aktualisieren

Keine

Keine

Serverprojekt

Vergleichen und Aktualisieren

Keine

Compare

Vergleichen und Aktualisieren

Keine

Keine

DAC-Projekt

Compare

Keine

Keine

Keine

Vergleichen und Aktualisieren

Compare

DACPAC-Datei

Compare

Keine

Keine

Keine

Vergleichen und Aktualisieren

Compare

Um diese Tabelle zu lesen, suchen Sie in der Spalte ganz links die Zeile für das Quellschema. Suchen Sie danach in der obersten Zeile die Spalte für das Zielschema. Der Schnittpunkt dieser Spalte und Zeile stellt Informationen darüber bereit, ob Sie die Quelle und das Ziel nur vergleichen, oder ob Sie einen Vergleich durchführen und anschließend optional das Zielschema aktualisieren können.

Sie können Serverschemas und Datenbankschemas nicht miteinander vergleichen. Dies betrifft auch Schemas in Form einer DBSCHEMA-Datei. Sie können z. B. ein Serverprojekt mit einer DBSCHEMA-Datei vergleichen, die aus einem Serverprojekt erstellt wurde.

Sie können zwei Datenbankprojekte nur vergleichen, wenn sie in der gleichen Projektmappe in Visual Studio enthalten sind.

Warnung

Zwar können Sie eine Quelldatenbank mit einem Zieldatenbankprojekt (.dbproj) vergleichen, doch sollten Sie stattdessen das Datenbankprojekt ändern und diese Änderungen an der Datenbank bereitstellen. Wenn Sie das Projekt (.dbproj) ändern und dann bereitstellen, reduzieren Sie das Risiko, dass Ihre Änderungen mit von ein anderem Mitglied des Teams vorgenommenen Änderungen in Konflikt stehen, da das Projekt unter Versionskontrolle steht.

Verhindern von Datenverlusten beim Aktualisieren von Datenbankschemas

Wenn Sie Datenbankschemas mithilfe eines Schemavergleichs aktualisieren, können Datenverluste auftreten. Um Datenverluste zu vermeiden, sollten Sie die Namen der Objekte in der Quelle und dem Ziel besonders genau betrachten, insbesondere vor dem Aktualisieren des Schemas im Ziel.

Sie können z. B. eine Tabelle von Order_Details in OrderDetails in der Quelldatenbank, aber nicht der Zieldatenbank umbenennen und dann die beiden Datenbanken vergleichen. Vor dem Synchronisieren sind die Daten in beiden Tabellen identisch. Wenn Sie jedoch das Ziel aktualisieren, wird die Tabelle Order_Details gelöscht, und die neue Tabelle OrderDetails wird erstellt. Dabei können alle Daten in der Tabelle Order_Details verloren gehen.

Zum Verhindern dieses Datenverlusts können Sie das Menü Extras öffnen, auf Optionen klicken und dann das Kontrollkästchen Schema-Updates blockieren, wenn Datenverlust auftreten könnte aktivieren, um Datenverluste zu verhindern. Außerdem sollten Sie die Datenbank immer sichern, bevor Sie darin Aktualisierungen schreiben. Beim Schemavergleich können Sie auch Optionen für den Vergleich angeben. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas.

Wichtig

Wenn Sie Objekte im Datenbankprojekt mithilfe der Umgestaltung umbenennen, trägt das Umgestaltungsprotokoll ebenfalls zur Vermeidung von Datenverlusten beim Build und Bereitstellen der Datenbank bei. In diesem Protokoll wird die Absicht der Änderungen beibehalten. Tabellen können an ihrem Speicherort umbenannt werden.

Unterschiede zwischen Schemavergleich und inkrementeller Bereitstellung

Wenn Sie Updates an einer vorhandenen Datenbank bereitstellen, ähnelt der Vorgang stark der Verwendung des Schemavergleichs zum Synchronisieren zweier Datenbankschemas. Beim Schemavergleich besteht jedoch ein wichtiger Unterschied: standardmäßig werden beim Schemavergleich erweiterte Eigenschaften ignoriert.

Sie können die Optionen für den Schemavergleich für alle Schemavergleichssitzungen oder, wenn erweiterte Eigenschaften und Berechtigungen nicht ignoriert werden sollen, auch nur für die aktuelle Sitzung ändern. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas.

Allgemeine Aufgaben

In der folgenden Tabelle finden Sie die Beschreibungen häufiger Aufgaben, die dieses Szenario unterstützen, und Links zu weiteren Informationen zur erfolgreichen Ausführung dieser Aufgaben.

Allgemeine Aufgaben

Unterstützender Inhalt

Praktische Übungen: Sie können die einführenden exemplarischen Vorgehensweisen ausführen, um sich mit dem Vergleichen zweier Datenbanken oder einer Datenbank und eines Projekts (.dbproj) vertraut zu machen.

Exemplarische Vorgehensweise: Vergleichen der Schemas von zwei Datenbanken

Exemplarische Vorgehensweise: Vergleichen der Schemas einer Datenbank und eines Datenbankprojekts

Festlegen von Optionen zum Steuern des Schemavergleichs: Sie können Details konfigurieren, mit denen Sie den Schemavergleich steuern. Sie können bestimmte Typen von Unterschieden ignorieren, z. B. Leerstellen, Dateigruppen und Kommentare. Sie können auch Kategorien von Objekten ignorieren, z. B. Benutzer oder Anmeldeinformationen. Sie können Optionen angeben, um das generierte Updateskript zu steuern.

Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas

Vergleichen von Datenbank- oder Serverobjekten und optionales Aktualisieren Sie des Ziels, sodass dieses mit der Quelle übereinstimmt: Sie geben ein Quell- und ein Zielschema an, um diese zu vergleichen, und die Ergebnisse werden im Fenster Schemavergleich angezeigt. Sie können Details der Unterschiede und das Updateskript anzeigen, mit dem Sie die Datenbank synchronisiert wird. Sie können jeden Schemavergleich im Projekt oder in einer eigenständigen SCMP-Datei speichern. Sie geben für jeden Unterschied zwischen Quell- und Zielschemas Aktionen an, und dann können Sie die Aktualisierungen in das Ziel schreiben. Sie können auch das Updateskript in den Transact-SQL-Editor oder in eine Datei exportieren, sodass Sie es vor dem Übernehmen der Änderungen für das Ziel überprüfen können.

Gewusst wie: Vergleichen von Datenbankschemas

Grundlagen zu den Ergebnissen eines Schemavergleichs

Problembehandlung: Sie können mehr darüber erfahren, wie allgemeine Probleme beim Vergleichen und Synchronisieren von Datenbankschemas behoben werden können.

Problembehandlung bei Schemavergleichen

Grundlagen zu den Ergebnissen eines Schemavergleichs

Im Fenster Schemavergleich werden für jedes zu vergleichende Objekt vier Spalten angezeigt. In der folgenden Tabelle werden die Inhalte der einzelnen Spalten beschrieben.

Spalte

Werte

Status

  • Gleich – Das Objekt verfügt im Quellschema und Zielschema über die gleiche Definition und enthält dort jeweils die gleichen Objekte.

  • Neu – Das Objekt ist im Quellschema vorhanden, nicht jedoch im Zielschema.

  • Fehlt – Das Objekt ist im Zielschema vorhanden, nicht jedoch im Quellschema.

  • Unterschiedliche Definition – Das Objekt verfügt im Quellschema über eine andere Definition als im Zielschema.

  • Unterschiedliche Abhängigkeiten – Das Objekt verfügt im Quellschema und Zielschema über die gleiche Definition, aber enthält andere Objekte.

Sie können z. B. eine Tabellendefinition im Quellschema, aber nicht im Zielschema ändern und dann vergleichen. Die Tabellen werden als Unterschiedliche Definition markiert, und das Schema, das diese Tabellen enthält, wird als Unterschiedliche Abhängigkeiten markiert.

Quellenname (Quelle {Projekt, Datenbank oder Projektdatei (.dbschema)})

Der Name des Quellprojekts, der Datenbank oder der Projektdatei für den Vergleich.

Aktualisierungsaktion

  • Überspringen – Das Objekt wird nicht im Zielschema aktualisiert. Wenn Abhängigkeiten des Objekts geändert wurden, gibt das Symbol an, dass Sie diese Zeile erweitern müssen, um das Objekt, auf das verwiesen wird und den Unterschied aufweist, anzuzeigen.

  • Verweise überspringen – Das Objekt ist in einer Datenbank vorhanden, auf die verwiesen wird, und muss nicht abgelegt oder erstellt werden.

  • Erstellen – Das Objekt wird erstellt, wenn Sie Aktualisierungen schreiben oder das Updateskript ausführen.

  • Aktualisieren – Die Objektdefinition wird beim Schreiben der Aktualisierungen oder Ausführen des Updateskripts so aktualisiert, dass sie mit dem Quellschema übereinstimmt.

  • Löschen – Die Objektdefinition wird beim Schreiben der Aktualisierungen oder Ausführen des Updateskripts aus dem Zielschema entfernt.

HinweisHinweis
Der Standardaktion wird durch den Status bestimmt.Für Objekte mit dem Status Equal ist die Standardaktion Überspringen, und Sie können diese nicht ändern.Für Objekte mit dem Status Neu ist die Standardaktion Erstellen, jedoch können Sie Überspringen angeben.Für Objekte mit dem Status Fehlt ist die Standardaktion Löschen, jedoch können Sie Überspringen angeben.Für Objekte mit dem Status Unterschiedliche Definition ist die Standardaktion Aktualisieren, jedoch können Sie Überspringen angeben.Für den Status Unterschiedliche Objekte ist die Standardaktion Überspringen, und Sie können diese nicht ändern (in diesem Fall ist das Objekt gleich, enthält jedoch Objekte, die neu sind, fehlen oder geändert wurden).

Zielname (Ziel {Projekt, Datenbank oder Projektdatei (.dbschema)})

Der Name des Zielprojekts, der Datenbank oder der Projektdatei für den Vergleich.

Ähnliche Szenarien

Änderungsprotokoll

Datum

Versionsgeschichte

Grund

Juni 2010

Gemäß Kundenfeedback Informationen zum Verständnis der ersten Tabelle im Thema hinzugefügt.

Kundenfeedback.

August 2010

Erläutert, dass Projekte nur verglichen werden können, wenn sie in der gleichen Projektmappe enthalten sind.

Kundenfeedback.