Exemplarische Vorgehensweise: Vergleichen der Schemas von zwei Datenbanken

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 dieser exemplarischen Vorgehensweise vergleichen Sie die Schemas von zwei Datenbanken mithilfe von Visual Studio. Beim Schemavergleich wird auch ein DDL-Skript (Datendefinitionssprache) der Unterschiede generiert. Sie verwenden Sie diese Datei, um das Schema des Ziels mit dem der Quelle zu synchronisieren. Weitere Informationen finden Sie unter Vergleichen und Synchronisieren von Datenbankschemas.

In dieser exemplarischen Vorgehensweise führen Sie folgende Verfahren aus:

  • Erstellen einer einfachen Datenbank. Wenn Sie Exemplarische Vorgehensweise: Vergleichen der Schemas einer Datenbank und eines Datenbankprojekts abgeschlossen haben, können Sie die resultierende Datenbank verwenden und diesen Teil der exemplarischen Vorgehensweise überspringen.

  • Erstellen einer leeren Datenbank. Die Datenbank CompareProjectDB wird als Quelle verwendet, und Sie erstellen eine leere Datenbank als Ziel.

  • Vergleichen der Schemas von zwei Datenbanken. Durch das Vergleichen der Schemas ermitteln Sie die strukturellen Unterschiede zwischen den Datenbanken, zeigen die Unterschiede in einer Tabelle an und erstellen ein DDL-Skript, das die Unterschiede enthält.

  • Untersuchen des Synchronisierungsskripts. Überprüfen Sie das DDL-Skript, und bearbeiten Sie es vor dem Ausführen.

  • Aktualisieren der Zieldatenbank. Führen Sie das DDL-Skript aus, und ändern Sie das Schema des Ziels.

Vorbereitungsmaßnahmen

Die folgenden Produkte müssen installiert sein:

  • SQL Server 2008

  • Berechtigungen zum Erstellen und Aktualisieren von Datenbanken auf dem Zieldatenbankserver

  • Visual Studio Premium oder Visual Studio Ultimate

Erstellen einer einfachen Datenbank

Sie erstellen eine einfache Datenbank, indem Sie die folgenden Aufgaben ausführen:

  • Erstellen eines Skripts mit einem Datenbankschema

  • Erstellen eines Datenbankprojekts und Importieren dieses Schemas

  • Erstellen des Datenbankprojekts für eine isolierte Entwicklungsumgebung

Erstellen eines Skripts mit einem Datenbankschema

So erstellen Sie ein Skript, aus dem Sie ein Schema importieren können

  1. Zeigen Sie im Menü Datei auf Neu, und klicken Sie auf Datei.

    Das Dialogfeld Neue Datei wird angezeigt.

  2. Klicken Sie in der Liste Kategorien auf Allgemein, wenn dieser Eintrag nicht bereits hervorgehoben ist.

  3. Klicken Sie in der Liste Vorlagen auf SQL-Datei und dann auf Öffnen.

    Der Transact-SQL-Editor wird geöffnet.

  4. Kopieren Sie den folgenden Transact-SQL-Code, und fügen Sie diesen in den Transact-SQL-Editor ein.

    PRINT N'Creating Sales...';
    GO
    CREATE SCHEMA [Sales]
        AUTHORIZATION [dbo];
    GO
    PRINT N'Creating Sales.Customer...';
    GO
    CREATE TABLE [Sales].[Customer] (
        [CustomerID]   INT IDENTITY (1, 1) NOT NULL,
        [CustomerName] NVARCHAR (40) NOT NULL,
        [YTDOrders] INT NOT NULL,
        [YTDSales] INT NOT NULL
    );
    GO
    PRINT N'Creating Sales.Orders...';
    GO
    CREATE TABLE [Sales].[Orders] (
        [CustomerID] INT NOT NULL,
        [OrderID] INT IDENTITY (1, 1) NOT NULL,
        [OrderDate] DATETIME NOT NULL,
        [FilledDate] DATETIME NULL,
        [Status] CHAR (1) NOT NULL,
        [Amount] INT NOT NULL
    );
    GO
    PRINT N'Creating Sales.Def_Customer_YTDOrders...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [Def_Customer_YTDOrders] DEFAULT 0 FOR [YTDOrders];
    GO
    PRINT N'Creating Sales.Def_Customer_YTDSales...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [Def_Customer_YTDSales] DEFAULT 0 FOR [YTDSales];
    GO
    PRINT N'Creating Sales.Def_Orders_OrderDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [Def_Orders_OrderDate] DEFAULT GetDate() FOR [OrderDate];
    GO
    PRINT N'Creating Sales.Def_Orders_Status...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [Def_Orders_Status] DEFAULT 'O' FOR [Status];
    GO
    PRINT N'Creating Sales.PK_Customer_CustID...';
    GO
    ALTER TABLE [Sales].[Customer]
        ADD CONSTRAINT [PK_Customer_CustID] PRIMARY KEY CLUSTERED ([CustomerID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
    GO
    PRINT N'Creating Sales.PK_Orders_OrderID...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [PK_Orders_OrderID] PRIMARY KEY CLUSTERED ([OrderID] ASC) WITH (ALLOW_PAGE_LOCKS = ON, ALLOW_ROW_LOCKS = ON, PAD_INDEX = OFF, IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF);
    GO
    PRINT N'Creating Sales.FK_Orders_Customer_CustID...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [FK_Orders_Customer_CustID] FOREIGN KEY ([CustomerID]) REFERENCES [Sales].[Customer] ([CustomerID]) ON DELETE NO ACTION ON UPDATE NO ACTION;
    GO
    PRINT N'Creating Sales.CK_Orders_FilledDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [CK_Orders_FilledDate] CHECK ((FilledDate >= OrderDate) AND (FilledDate < '01/01/2010'));
    GO
    PRINT N'Creating Sales.CK_Orders_OrderDate...';
    GO
    ALTER TABLE [Sales].[Orders]
        ADD CONSTRAINT [CK_Orders_OrderDate] CHECK ((OrderDate > '01/01/2005') and (OrderDate < '01/01/2020'));
    GO
    PRINT N'Creating Sales.uspCancelOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspCancelOrder]
    @OrderID INT
    AS
    BEGIN
    DECLARE @Delta INT, @CustomerID INT
    BEGIN TRANSACTION
        SELECT @Delta = [Amount], @CustomerID = [CustomerID]
         FROM [Sales].[Orders] WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Orders]
       SET [Status] = 'X'
    WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Customer]
       SET
       YTDOrders = YTDOrders - @Delta
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    END
    GO
    PRINT N'Creating Sales.uspFillOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspFillOrder]
    @OrderID INT, @FilledDate DATETIME
    AS
    BEGIN
    DECLARE @Delta INT, @CustomerID INT
    BEGIN TRANSACTION
        SELECT @Delta = [Amount], @CustomerID = [CustomerID]
         FROM [Sales].[Orders] WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Orders]
       SET [Status] = 'F',
           [FilledDate] = @FilledDate
    WHERE [OrderID] = @OrderID;
    
    UPDATE [Sales].[Customer]
       SET
       YTDSales = YTDSales - @Delta
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    END
    GO
    PRINT N'Creating Sales.uspNewCustomer...';
    GO
    CREATE PROCEDURE [Sales].[uspNewCustomer]
    @CustomerName NVARCHAR (40)
    AS
    BEGIN
    INSERT INTO [Sales].[Customer] (CustomerName) VALUES (@CustomerName);
    SELECT SCOPE_IDENTITY()
    END
    GO
    PRINT N'Creating Sales.uspPlaceNewOrder...';
    GO
    CREATE PROCEDURE [Sales].[uspPlaceNewOrder]
    @CustomerID INT, @Amount INT, @OrderDate DATETIME, @Status CHAR (1)='O'
    AS
    BEGIN
    DECLARE @RC INT
    BEGIN TRANSACTION
    INSERT INTO [Sales].[Orders] (CustomerID, OrderDate, FilledDate, Status, Amount) 
         VALUES (@CustomerID, @OrderDate, NULL, @Status, @Amount)
    SELECT @RC = SCOPE_IDENTITY();
    UPDATE [Sales].[Customer]
       SET
       YTDOrders = YTDOrders + @Amount
        WHERE [CustomerID] = @CustomerID
    COMMIT TRANSACTION
    RETURN @RC
    END
    GO
    
  5. Klicken Sie im Menü Datei auf SqlQuery_1.sql speichern unter.

    Das Dialogfeld Datei speichern unter wird angezeigt.

  6. Geben Sie in Objektname den Dateinamen SampleImportScript.sql ein.

    Sie können die Datei an einem beliebigen Speicherort auf dem Computer speichern. Notieren Sie sich den Speicherort, da Sie dieses Skript in der nächsten Prozedur verwenden müssen.

  7. Klicken Sie auf Speichern.

  8. Klicken Sie im Menü Datei auf Projektmappe schließen.

    Danach erstellen Sie ein Datenbankprojekt und importieren das Schema aus dem erstellten Skript.

Erstellen eines Datenbankprojekts und Importieren eines Schemas

So erstellen Sie ein Datenbankprojekt

  1. Zeigen Sie im Menü Datei auf Neu, und klicken Sie auf Projekt.

    Das Dialogfeld Neues Projekt wird angezeigt.

  2. Erweitern Sie unter Installierte Vorlagen den Knoten Datenbank, und klicken Sie dann auf SQL Server.

  3. Klicken Sie in der Liste der Vorlagen auf SQL Server 2008-Datenbankprojekt.

  4. Geben Sie unter Name den Namen CompareProjectDB ein.

  5. Klicken Sie in der Liste Projektmappe auf Neue Projektmappe erstellen aus, sofern diese Option nicht bereits hervorgehoben ist.

  6. Aktivieren Sie ggf. das Kontrollkästchen Projektmappenverzeichnis erstellen.

  7. Deaktivieren Sie ggf. das Kontrollkästchen Zur Quellcodeverwaltung hinzufügen, und klicken Sie auf OK.

    Das Datenbankprojekt wird erstellt und im Projektmappen-Explorer angezeigt. Importieren Sie anschließend das Datenbankschema aus einem Skript.

So importieren Sie ein Datenbankschema aus einem Skript

  1. Klicken Sie im Menü Projekt auf Skript importieren.

  2. Klicken Sie auf Weiter, nachdem Sie die Willkommensseite gelesen haben.

  3. Klicken Sie auf Durchsuchen, und geben Sie den Pfad an, unter dem Sie die Datei SampleImportScript.sql gespeichert haben.

  4. Doppelklicken Sie auf die Datei SampleImportScript.sql, und klicken Sie auf Fertig stellen.

    Das Skript wird importiert, und die in diesem Skript definierten Objekte werden dem Datenbankprojekt hinzugefügt.

  5. Überprüfen Sie die Zusammenfassung, und klicken Sie dann auf Fertig stellen, um den Vorgang abzuschließen.

    Tipp

    Die Prozedur Sales.uspFillOrder enthält einen absichtlichen Codierungsfehler, den Sie in der exemplarischen Vorgehensweise für Komponententests ermitteln und korrigieren.

So überprüfen Sie das resultierende Projekt

  1. Erweitern Sie im Projektmappen-Explorer den untergeordneten Knoten Schemaobjekte.

  2. Betrachten Sie die untergeordneten Knoten unter dem Knoten Schemaobjekte in der Hierarchie.

    Der Projektmappen-Explorer enthält die Dateien, die die Datenbankobjekte definieren.

  3. Klicken Sie im Menü Ansicht auf Schemaansicht der Datenbank.

  4. Erweitern Sie in der Schemaansicht den Knoten CompareProjectDB.

  5. Untersuchen Sie in der Hierarchie die dem Knoten CompareProjectDB untergeordneten Knoten.

    Die Schemaansicht enthält die Objekte, die in den Dateien definiert sind, die im Projektmappen-Explorer angezeigt werden.

Bereitstellen einer isolierten Entwicklungsumgebung

Stellen Sie anschließend das Projekt bereit, um eine Datenbank mit dem importierten Schema, aber ohne Daten zu erstellen. Sie erstellen diese Datenbank in einer isolierten Entwicklungsumgebung oder einer Sandbox. Daher können Sie die Datenbank ohne Einfluss anderer Aufgaben entwickeln und testen.

So konfigurieren und erstellen Sie das Datenbankprojekt

  1. Klicken Sie im Projektmappen-Explorer auf das Datenbankprojekt CompareProjectDB.

  2. Klicken Sie im Menü Projekt auf CompareProjectDB-Eigenschaften.

    Das Eigenschaftendialogfeld für das Projekt wird angezeigt.

  3. Klicken Sie auf die Registerkarte Bereitstellen.

  4. Klicken Sie in der Liste Bereitstellungseinstellungen konfigurieren für auf Meine isolierte Entwicklungsumgebung. Wenn Sie Einstellungen für die isolierte Entwicklungsumgebung konfigurieren, können Sie andere Bereitstellungseinstellungen verwenden als für andere Umgebungen, z. B. den Test- oder Produktionsserver.

  5. Klicken Sie in der Liste Bereitstellungsvorgang auf Bereitstellungsskript erstellen und in Datenbank bereitstellen (.sql).

  6. Klicken Sie unter Einstellungen für die Zieldatenbank auf Bearbeiten.

    Das Dialogfeld Verbindungseigenschaften wird angezeigt.

  7. Legen Sie die Verbindungseigenschaften für die zu erstellende Datenbank fest, und klicken Sie dann auf OK.

    Im Feld Zielverbindung wird die richtige Verbindungszeichenfolge angezeigt.

    Warnung

    Sie sollten die neue Datenbank auf einem Testserver, einem Entwicklungsserver oder auf dem lokalen Computer erstellen. Der Produktionsserver sollte nicht angegeben werden.

  8. Geben Sie unter Zieldatenbankname den Namen CompareProjectDB ein.

  9. Klicken Sie neben Name der Bereitstellungskonfiguration auf Bearbeiten.

  10. Deaktivieren Sie das Kontrollkästchen Inkrementelle Bereitstellung blockieren, wenn Datenverlust auftreten könnte.

    Tipp

    In dieser exemplarischen Vorgehensweise testen Sie die gespeicherten Prozeduren anhand einer leeren Datenbank, die Sie als Teil des Datenbankkomponententests bereitstellen. Sie müssen keine vorhandenen Daten beibehalten, da Sie die gespeicherten Prozeduren in der isolierten Entwicklungsumgebung testen.

  11. Klicken Sie im Menü Datei auf Alle speichern.

  12. Klicken Sie im Menü Erstellen auf Projektmappe erstellen.

    Die eben festgelegten Eigenschaften bestimmen, wie das Bereitstellungsskript erstellt wird. Der Status des Builds wird im Fenster Ausgabe angezeigt, und die letzte Zeile sollte Build: 1 erfolgreich oder aktuell lauten.

So stellen Sie das Datenbankprojekt bereit

  1. Klicken Sie im Projektmappen-Explorer auf das Datenbankprojekt CompareProjectDB.

  2. Klicken Sie im Menü Erstellen auf CompareProjectDB bereitstellen.

    Warnung

    Sie sollten diese Bereitstellung auf einem Testserver, einem Entwicklungsserver oder dem lokalen Computer ausführen. Der Produktionsserver sollte nicht angegeben werden.

    Das Datenbankprojekt wird in einer neuen Datenbank bereitgestellt. Der Status der Bereitstellung wird im Ausgabefenster angezeigt, wobei die letzte Zeile Die Bereitstellung war erfolgreich lauten sollte. Danach erstellen Sie eine leere Datenbank, die Sie mit dieser bereitgestellten Datenbank vergleichen können.

Erstellen einer leeren Datenbank

So erstellen Sie eine leere Datenbank

  1. Zeigen Sie im Menü Datei auf Neu, und klicken Sie dann auf Projekt.

    Das Dialogfeld Neues Projekt wird angezeigt.

  2. Erweitern Sie in der Liste Installierte Vorlagen den Knoten Datenbank, und klicken Sie auf SQL Server.

  3. Klicken Sie auf SQL Server 2008-Assistenten.

  4. Geben Sie im Feld Name den Namen EmptyDB ein.

  5. Übernehmen Sie die Standardeinstellungen für die übrigen Felder, und klicken Sie dann auf OK.

  6. Klicken Sie im Assistenten für neue Datenbankprojekte auf Build/Bereitstellung konfigurieren.

  7. Klicken Sie in der Liste Bereitstellungsvorgang auf Bereitstellungsskript erstellen und in Datenbank bereitstellen (.sql).

  8. Klicken Sie unter Zielverbindung auf die Schaltfläche Durchsuchen.

  9. Geben Sie die Verbindung mit dem Datenbankserver an, auf dem Sie die leere Datenbank erstellen möchten, und klicken Sie dann auf Fertig stellen.

    Das Datenbankprojekt EmptyDB wird erstellt und im Projektmappen-Explorer angezeigt.

  10. Klicken Sie im Projektmappen-Explorer auf das Datenbankprojekt EmptyDB.

  11. Klicken Sie im Menü Erstellen auf EmptyDB bereitstellen.

    Das Datenbankprojekt wird erstellt und auf dem angegebenen Server bereitgestellt.

Vergleichen der Schemas von zwei Datenbanken

So vergleichen Sie die Schemas von zwei Datenbanken

  1. Zeigen Sie im Menü Daten auf Schemavergleich, und klicken Sie dann auf Neuer Schemavergleich.

    Das Dialogfeld Neuer Schemavergleich wird angezeigt, in dem Sie die Quelle und das Ziel angeben können. In diesem Dialogfeld geben Sie die Server an, auf denen sich die Quelle und das Ziel befinden, die Namen der Datenbanken sowie den Authentifizierungstyp, der beim Herstellen der Verbindung mit den Datenbanken verwendet werden soll.

    Zudem wird das Fenster Schemavergleich im Hintergrund geöffnet, und Visual Studio weist diesem automatisch einen Namen zu, z. B. SchemaCompare1.

  2. Klicken Sie unter Quellschema auf Datenbank und dann auf die Verbindung, die der Datenbank CompareProjectDB entspricht.

    Wenn in der Liste keine solche Verbindung angezeigt wird, klicken Sie auf Neue Verbindung. Geben Sie im Dialogfeld Verbindungseigenschaften den Server mit der Datenbank CompareProjectDB, den Authentifizierungstyp, der beim Herstellen einer Verbindung mit der Datenbank verwendet werden soll, sowie die Datenbank selbst an. Klicken Sie abschließend auf OK.

    Tipp

    Nachdem Sie eine Verbindung hergestellt haben, wird diese in Server-Explorer unter Datenverbindungen angezeigt.

  3. Klicken Sie unter Zielschema auf Datenbank und dann auf die Verbindung, die der Datenbank EmptyDB entspricht.

    Wenn in der Liste keine solche Verbindung angezeigt wird, klicken Sie auf Neue Verbindung. Geben Sie im Dialogfeld Verbindungseigenschaften den Server mit der Datenbank EmptyDB, den Authentifizierungstyp, der beim Herstellen einer Verbindung mit der Datenbank verwendet werden soll, und die Datenbank selbst an. Klicken Sie abschließend auf OK.

  4. Klicken Sie auf Optionen, um die zu vergleichenden Objekte, die zu ignorierenden Typen von Unterschieden und den beabsichtigten Inhalt des generierten Updateskripts anzugeben.

    Tipp

    Bei Datenbankvergleichen geben Sie keine SQLCMD-Variablen an.

  5. Erweitern Sie auf der Registerkarte Allgemein den Knoten Vergleichsoptionen.

  6. Wählen Sie Dateinamen und Pfade für Dateien und Protokolldateien ignorieren aus.

  7. Klicken Sie auf OK.

  8. Klicken Sie auf OK.

    Der Schemavergleich wird gestartet.

    Tipp

    Sie können einen derzeit ausgeführten Vergleich beenden, indem Sie das Menü Daten öffnen, auf Schemavergleich zeigen und dann auf Schemavergleich beenden klicken.

    Sie können Optionen konfigurieren, die angeben, was als Unterschied betrachtet wird, und die beeinflussen, wie das Aktualisierungsskript erstellt wird. Weitere Informationen finden Sie unter Gewusst wie: Festlegen von Optionen für das Vergleichen von Datenbankschemas.

    Wenn der Vergleich abgeschlossen ist, werden die strukturellen Unterschiede zwischen den beiden Datenbanken in der Tabelle im Fenster Schemavergleich angezeigt. In der Tabelle wird eine Zeile für jedes Datenbankobjekt angezeigt, das in einer der beiden Datenbanken vorhanden ist. Datenbankobjekte werden nach Typ organisiert: Tabellen, Ansichten, gespeicherte Prozeduren, Rollen usw.

Aktualisieren der Zieldatenbank

Sie haben zwei Möglichkeiten zum Aktualisieren des Schemas der Zieldatenbank. Sie können das Schema direkt im Fenster Schemavergleich oder im Transact-SQL-Editor aktualisieren. In diesem Abschnitt werden beide Möglichkeiten beschrieben.

Nach dem Ausführen des Schemavergleichs werden die strukturellen Unterschiede in der Tabelle im Fenster Schemavergleich angezeigt. Für jedes Objekt in der Spalte CompareProjectDB (Quelldatenbank) wird in der Tabelle in der Spalte Aktion aktualisieren eine Aktion angezeigt, die zum Synchronisieren dieses Objekts in den beiden Datenbanken erforderlich ist. Da in diesem Fall die Zielspalte bei den Standardobjekten leer ist, enthält die Spalte Status in erster Linie den Status Neu, und die Spalte Aktion aktualisieren enthält in erster Linie die Aktion Erstellen.

Schreiben von Aktualisierungen in das Ziel

Sie können das Schema des Ziels mithilfe der Aktualisierungsaktionen aktualisieren, die im Fenster Schemavergleich aufgeführt sind. Um diese Aufgabe auszuführen, befolgen Sie die Schritte unter Schreiben von Aktualisierungen in die Zieldatenbank.

Anzeigen des Skripts und Schreiben der Aktualisierungen in das Ziel

Sie können ein Aktualisierungsskript exportieren, es genauer betrachten und ggf. ändern und anschließend damit die Zieldatenbank synchronisieren. Um diese Aufgaben auszuführen, befolgen Sie die Schritte unter Überprüfen und Ausführen des Synchronisierungsskripts.

Schreiben von Aktualisierungen in die Zieldatenbank

Tipp

Bevor Sie Aktualisierungen auf einem Produktions- oder Entwicklungsserver schreiben, sollten Sie möglicherweise die Zieldatenbank sichern. Da einige Schemaänderungen nicht in einer einzelnen Transaktion ausgeführt werden können, können Datenverluste auftreten, wenn Sie einen Aktualisierungsvorgang starten und dann abbrechen. Als Vorbereitung für das erneute Erstellen kann beispielsweise eine Tabelle in der Zieldatenbank gelöscht worden sein. Wenn Sie die Aktualisierung in diesem Moment abbrechen, kann die Tabelle verloren gehen. In dieser exemplarischen Vorgehensweise aktualisieren Sie eine leere Entwicklungsdatenbank. Daher sichern Sie die Zieldatenbank nicht.

So schreiben Sie Aktualisierungen in die Zieldatenbank

  1. Führen Sie in der Liste der Vergleichsergebnisse einen Bildlauf zum Knoten SQL-Dateien durch.

  2. Ändern Sie die Aktualisierungsaktion für die Dateien CompareProjectDB und Datei CompareProjectDB_Log von Erstellen in Überspringen.

    Tipp

    Wenn Sie zwei Datenbanken auf demselben Datenbankserver vergleichen, tritt bei der Synchronisierung ein Fehler auf, da die Zieldaten und die Protokolldateien bereits vorhanden sind und von der Quelldatenbank verwendet werden. In dieser exemplarischen Vorgehensweise überspringen Sie nur die Aktualisierungen der Dateien und synchronisieren den Inhalt der Datenbank.

  3. Ändern Sie die Aktualisierungsaktion für die Dateien EmptyDB und Datei EmptyDB_log von Löschen in Überspringen.

    Tipp

    Da Sie die Dateien nicht aus der Quelldatenbank erstellen, dürfen Sie die Dateien für die Zieldatenbank nicht löschen. In dieser exemplarischen Vorgehensweise überspringen Sie nur die Aktualisierungen der Dateien und synchronisieren den Inhalt der Datenbank.

  4. Klicken Sie auf der Symbolleiste Schemavergleich auf Updates schreiben.

    Die im Fenster Schemavergleich aufgeführten Aktualisierungsaktionen werden ausgeführt. Bei der Synchronisierung wird das Schema des Ziels an das der Quelle angepasst.

    Tipp

    Während der Aktualisierung können Sie den Vorgang abbrechen, indem Sie das Menü Daten öffnen, auf Schemavergleich zeigen und dann auf Schreiben auf Ziel beenden klicken.

    Wenn Sie den Vergleich erneut ausführen und sicherstellen möchten, dass die ausgewählten Aktualisierungen vorgenommen wurden, können Sie auf der Symbolleiste Schemavergleich auf Aktualisieren klicken.

Überprüfen und Ausführen des Synchronisierungsskripts

So überprüfen Sie das Synchronisierungsskript

  1. Zeigen Sie im Menü Daten auf Schemavergleich, zeigen Sie auf Exportieren nach, und klicken Sie dann auf Editor.

    Sie können auch auf der Symbolleiste Schemavergleich auf In Editor exportieren klicken.

    Der Transact-SQL-Editor wird im Offlinemodus geöffnet, und das Transact-SQL-Synchronisierungsskript wird angezeigt. Der Name dieses Fensters lautet Server.CompareProjectDB - SchemaUpdate_EmptyDB_1.sql o. ä., und es wird das Transact-SQL-Skript angezeigt. Da Sie in diesem Fenster über Lese- und Schreibzugriff verfügen, können Sie das Skript ändern. Wenn Sie es ändern, öffnen Sie das Menü Datei, und klicken Sie dann auf Speichern. Wenn Sie die Datei speichern, können Sie deren Pfad und Namen angeben.

  2. Klicken Sie auf der Symbolleiste Transact-SQL-Editor auf SQLCMD-Modus.

    Wenn Sie den SQLCMD-Modus nicht aktivieren, treten beim Ausführen des Skripts Fehler auf.

  3. Führen Sie zum Synchronisieren der Schemas der beiden Datenbanken dieses Skript aus, indem Sie auf der Symbolleiste des Transact-SQL-Editors auf SQL ausführen klicken oder F5 drücken.

    Das Dialogfeld Verbindung zur Datenbank herstellen wird angezeigt.

  4. Klicken Sie auf die Verbindung, die der Datenbank EmptyDB entspricht, und klicken Sie auf OK.

    Warnung

    Wenn Sie versuchen, das Updateskript für eine andere Datenbank auszuführen, können nicht beabsichtigte Ergebnisse auftreten.

    Der Vergleich wird nicht automatisch aktualisiert. Wenn Sie den Vergleich erneut ausführen und sicherstellen möchten, dass die ausgewählten Aktualisierungen vorgenommen wurden, müssen Sie auf der Symbolleiste Schemavergleich auf Aktualisieren klicken.

Nächste Schritte

Sie können nun die Daten innerhalb der beiden Datenbanken vergleichen. Weitere Informationen finden Sie unter Gewusst wie: Vergleichen und Synchronisieren der Daten von zwei Datenbanken.

Siehe auch

Aufgaben

Gewusst wie: Vergleichen und Synchronisieren der Daten von zwei Datenbanken

Gewusst wie: Vergleichen von Datenbankschemas

Exemplarische Vorgehensweise: Vergleichen der Daten von zwei Datenbanken

Exemplarische Vorgehensweise: Vergleichen der Schemas einer Datenbank und eines Datenbankprojekts

Konzepte

Vergleichen und Synchronisieren von Daten in einer oder mehreren Tabellen mit Daten aus einer Referenzdatenbank

Erstellen und Verwalten von Anwendungen auf Datenebene und Datenbanken in Visual Studio