Vergleichen und Synchronisieren von Datenbankschemas
Dieses Thema gilt für folgende Anwendungsbereiche:
Visual Studio Ultimate |
Visual Studio Premium |
Visual Studio Professional |
Visual Studio Express |
---|---|---|---|
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. |
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 |
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 |
Hinweis
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
Vergleichen und Synchronisieren von Daten in einer oder mehreren Tabellen mit Daten aus einer Referenzdatenbank
Mit einem Datenvergleich können Sie Daten zwischen Tabellen in Quell- und Zieldatenbanken synchronisieren.Umbenennen aller Verweise auf ein Datenbankobjekt
Mithilfe der Umgestaltung können Sie alle Verweise auf ein Datenbankobjekt umbenennen. Beim Build und Bereitstellen wird das Umgestaltungsprotokoll verwendet, um die Absicht der Änderungen beizubehalten und das Risiko von Datenverlusten zu senken.Erstellen und Bereitstellen von Datenbanken für eine isolierte Entwicklungsumgebung
Sie können die Zieldatenbank mit einem Schemavergleich aktualisieren, doch sollten die Teams erwägen, das Datenbankprojekt zu ändern und dann diese Änderungen an der Zieldatenbank zu erstellen und bereitzustellen. Wenn Sie diese Vorgehensweise anwenden, behalten Sie die Absicht aller Umgestaltungsvorgänge bei, die Sie für das Datenbankprojekt ausführen. Zudem senken Sie das Risiko, dass Ihre Änderungen von einem anderen Teammitglied überschrieben werden, das auch die Datenbank per Schemavergleich aktualisiert.
Ä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. |