Demonstra Passo a passo: Comparando os esquemas de dois bancos de dados

Este tópico se aplica a:

Visual Studio Ultimate

Visual Studio Premium

Visual Studio Professional 

Visual StudioExpress

O tópico é aplicável O tópico é aplicável O tópico não é aplicável O tópico não é aplicável

Esta explicação passo a passo, você irá comparar o esquemas de dois bancos de dados usando o Visual Studio. A ação de comparação de esquema também gera uma Linguagem de definição de dados (DDL) script a partir das diferenças. Você usar esse arquivo para sincronizar o esquema da destino com que o fonte. Para obter mais informações, consulte Comparar e sincronizar esquemas de banco de dados.

Você seguirá esses procedimentos, esta explicação passo a passo:

  • Criar um banco de dados simple. Se você tiver concluído Demonstra Passo a passo: Comparando os esquemas de um projeto de banco de dados e o banco de dados, você pode usar o banco de dados resultante e pode ignorar esta parte da explicação passo a passo.

  • Criar um banco de dados vazio. O banco de dados de CompareProjectDB serve como fonte e criar um banco de dados vazio para servir como o destino.

  • Comparar os esquemas de dois bancos de dados. Comparando os esquemas, localizar as diferenças estruturais entre os bancos de dados, exibir as diferenças em uma tabela e gerar um script DDL que expressa as diferenças.

  • Examine o script de sincronização. Verifique o script DDL e você pode editá-lo antes de executá-lo.

  • Atualizar o banco de dados de destino. Execute o script DDL para alterar o esquema de destino.

Pré-requisitos

Você deve ter os seguintes produtos instalados:

  • SQL Server 2008

  • Permissões para criar e atualizar os bancos de dados no servidor de banco de dados de destino

  • Visual Studio PremiumouVisual Studio Ultimate

Criar um banco de dados Simple

Você criará um banco de dados simple, realizando as seguintes tarefas:

  • Criar um script que contém um esquema de banco de dados

  • Crie um projeto de banco de dados e importar o esquema

  • Implantar o projeto de banco de dados para um ambiente de desenvolvimento isolado

Criar um Script que contém um esquema de banco de dados

Para criar um script a partir do qual você pode importar um esquema

  1. Sobre o arquivo , aponte para novae, em seguida, clique em arquivo.

    O Novo arquivo caixa de diálogo aparece.

  2. No categorias , clique em Geral se já não estiver realçado.

  3. No modelos de lista, clique em Arquivo Sqle, em seguida, clique em Abrir.

    O Transact-SQL editor será aberta.

  4. Copie o seguinte Transact-SQL code e colá-lo para o Transact-SQL editor.

    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. Sobre o arquivo menu, clique em Salvar SqlQuery_1.sql como.

    O Salvar arquivo como caixa de diálogo aparece.

  6. Em nome do objeto, tipo SampleImportScript.sql.

    Você pode salvar o arquivo em qualquer local no computador. Anote a localização porque você deve usar esse script no próximo procedimento.

  7. Clique em Save.

  8. No menu File, clique em Close Solution.

    Em seguida, você cria um projeto de banco de dados e importar o esquema do script que você criou.

Crie um projeto de banco de dados e importar um esquema.

Para criar um projeto de banco de dados

  1. Sobre o arquivo , aponte para novae clique em projeto.

    A caixa de diálogo New Project será exibida.

  2. Em Modelos instalados, expanda o banco de dados nó e depois clique em SQL Server.

  3. Na lista de modelos, clique em Projeto de banco de dados de 2008 do SQL Server.

  4. Em nome, digite CompareProjectDB.

  5. No solução , clique em Criar solução se já não estiver realçado.

  6. Selecione o Create directory for solution caixa de seleção se não estiver selecionada.

  7. Limpar o Add to Source Control caixa de seleção se ele já não estiver desmarcada e clique em OK.

    O projeto de banco de dados é criado e aparece na Solution Explorer. Em seguida, você deve importar o esquema de banco de dados de um script.

Para importar um esquema de banco de dados de um script

  1. Sobre o projeto menu, clique em Importar Script.

  2. Clique em próximo depois de ler a página de boas-vindas.

  3. Clique em Procurare indicar o caminho onde você salvou o arquivo SampleImportScript.sql.

  4. Clique duas vezes no arquivo SampleImportScript.sql e, em seguida, clique em Concluir.

    O script é importado, e os objetos que são definidos no script são adicionados ao seu projeto de banco de dados.

  5. Revise o resumo e, em seguida, clique em Concluir para concluir a operação.

    ObservaçãoObservação

    O procedimento Sales.uspFillOrder contém um erro intencional de codificação que descobrir e corrigir na unidade de teste de explicação passo a passo.

Para examinar o projeto resultante

  1. Em Solution Explorer, expanda o Os objetos de esquema nó filho.

  2. Explore os subnós sob o Os objetos de esquema o nó na hierarquia.

    Solution Explorer contém os arquivos que definem os objetos de banco de dados.

  3. Sobre o Exibir menu, clique em Visualização do esquema de banco de dados.

  4. Em Visualização Esquema, expanda o nó de CompareProjectDB.

  5. Explore os subnós sob o nó de CompareProjectDB na hierarquia.

    Modo de exibição do esquema contém os objetos que são definidos nos arquivos que aparecem no Solution Explorer.

Implantando em um ambiente de desenvolvimento isolado

Em seguida, você pode implantar o projeto para criar um banco de dados que tem o esquema importado, mas nenhum dado. Criar o banco de dados em um o ambiente de desenvolvimento isolado, ou o modo seguro. Portanto, você pode desenvolver e testar o banco de dados sem interferência de outros esforços.

Para configurar e construir o projeto de banco de dados

  1. Em Solution Explorer, clique no projeto de banco de dados CompareProjectDB.

  2. Sobre o projeto menu, clique em Propriedades de CompareProjectDB.

    Aparece a caixa de diálogo Propriedades do projeto.

  3. Clique o Deploy guia.

  4. No definir configurações de implantação para , clique em Meu ambiente de desenvolvimento isolado. Definindo configurações de seu ambiente de desenvolvimento isolado, você pode usar as configurações de implantação diferentes daqueles que serão usados em outros ambientes, como, por exemplo, o servidor de teste ou produção.

  5. No A ação implantar , clique em criar um script de implantação (. SQL) e implantar banco de dados.

  6. Em Configurações de banco de dados de destino, clique em Editar.

    O Propriedades de conexão caixa de diálogo aparece.

  7. Defina as propriedades de conexão do banco de dados que você deseja criar e clique em OK.

    No Conexão de destino caixa, a seqüência de caracteres de conexão correta é exibida.

    Aviso

    Você deve criar o banco de dados em um servidor de teste, um servidor de desenvolvimento ou no computador local. Você não deve especificar o servidor de produção.

  8. Em nome do banco de dados de destino, digite CompareProjectDB.

  9. Ao lado de arquivo de configuração de implantação, clique em Editar.

  10. Limpar o implantação incremental do bloco se poderá ocorrer perda de dados caixa de seleção.

    ObservaçãoObservação

    Para esta explicação, você testará os procedimentos armazenados em um banco de dados vazio, o que você implantar como parte do teste de unidade de banco de dados. Não é necessário que preservar os dados existentes, pois você irá testar os procedimentos armazenados no seu ambiente de desenvolvimento isolado.

  11. No menu File, clique em Save All.

  12. Sobre o Build menu, clique em Build Solution.

    As propriedades que você acabou de definir determinam como o script de implantação é criado. O status da compilação aparece no saída janela, e Build: 1 com êxito ou atualizada deve aparecer como a última linha.

Para implantar o projeto de banco de dados

  1. Em Solution Explorer, clique no projeto de banco de dados CompareProjectDB.

  2. Sobre o Build menu, clique em Implantar CompareProjectDB.

    Aviso

    Você deve executar essa implantação contra um servidor de teste, um servidor de desenvolvimento ou computador local. Você não deve especificar o servidor de produção.

    O projeto de banco de dados é implantado para um novo banco de dados. O status da implantação aparece no saída janela, e implantação bem-sucedida deve aparecer como a última linha. Em seguida, crie um banco de dados vazio, você pode comparar a esse banco de dados distribuído.

Criar um banco de dados vazio

Para criar um banco de dados vazio

  1. No menu File, aponte para New, e em seguida, clique em Project.

    A caixa de diálogo New Project será exibida.

  2. Na lista de Modelos instalados, expanda o banco de dados nó e clique em SQL Server.

  3. Clique em Assistente de 2008 do SQL Server.

  4. Em nome, tipo EmptyDB.

  5. Aceite os padrões para os campos restantes e clique em OK.

  6. No Assistente de novo projeto de banco de dados, clique em Build/Deploy configurar.

  7. No ação implantar , clique em criar um script de implantação (. SQL) e implantar o banco de dados.

  8. Em conexão de destino, clique na Procurar botão.

  9. Especificar a conexão com o servidor de banco de dados onde você deseja criar o banco de dados vazio e, em seguida, clique em Concluir.

    Um projeto de banco de dados chamado EmptyDB é criado e aparece na Solution Explorer.

  10. Em Solution Explorer, clique no projeto de banco de dados EmptyDB.

  11. Sobre o Build menu, clique em Implantar EmptyDB.

    O projeto de banco de dados é construído e implantado no servidor especificado.

Comparar os esquemas de dois bancos de dados

Para comparar os esquemas de dois bancos de dados

  1. Sobre o dados , aponte para Esquema comparare em seguida, clique em Comparação do novo esquema.

    O Novo esquema comparação caixa de diálogo será exibida para que você possa especificar a origem e destino. Nessa caixa de diálogo, você pode identificar os servidores em que a origem e destino residem, o nome de cada banco de dados e o tipo de autenticação a ser usado quando você se conectar a cada banco de dados.

    Além disso, a janela de esquema comparar abre em segundo plano, e Visual Studio atribui automaticamente um nome como SchemaCompare1.

  2. Em O esquema de origem, clique em banco de dadose em seguida, clique na conexão que corresponde ao banco de dados CompareProjectDB.

    Se não há tal conexão aparece na lista, clique em Nova conexão. No Propriedades de conexão caixa de diálogo caixa, identificar o servidor no qual reside o banco de dados de CompareProjectDB, o tipo de autenticação para usar quando você se conectar a ele e o próprio banco de dados. Quando você tiver terminado, clique em OK.

    ObservaçãoObservação

    Depois de estabelecer uma conexão, ele aparece na Server Explorer em Conexões de dados.

  3. Em O esquema de destino, clique em banco de dadose em seguida, clique na conexão que corresponde ao banco de dados EmptyDB.

    Se não há tal conexão aparece na lista, clique em Nova conexão. No Propriedades de conexão caixa de diálogo caixa, identificar o servidor no qual reside o banco de dados de EmptyDB, o tipo de autenticação para usar quando você se conectar a ele e o próprio banco de dados. Quando você tiver terminado, clique em OK.

  4. Clique em Opções para especificar quais objetos são comparados, quais tipos de diferenças são ignorados e o que irá conter o script de atualização gerados.

    ObservaçãoObservação

    Quando você compara os bancos de dados, você não especificar variáveis SQLCMD.

  5. Sobre o Geral guia, expanda o Opções de comparação nó.

  6. Selecione Ignorar nomes de arquivo e caminhos de arquivos e arquivos de log.

  7. Clique em OK.

  8. Clique em OK.

    A comparação de esquema é iniciado.

    ObservaçãoObservação

    Você pode interromper uma comparação que está em andamento, abrindo o dados menu, apontando para esquema Comparee clicando em Parar comparar do esquema.

    Você pode configurar as opções que determinam o que é considerado uma diferença e que alterar como o script de atualização é criado. Para obter mais informações, consulte Como: Definir opções para comparar os esquemas de banco de dados.

    Quando a comparação é concluída, as diferenças estruturais entre dois bancos de dados aparecem na tabela na janela comparar do esquema. A tabela exibe uma linha para cada o objeto de banco de dados que existe um banco de dados. Objetos de banco de dados são organizados por tipo: tabelas, modos de exibição, procedimentos armazenados, funções e assim por diante.

Atualizar o banco de dados de destino

Para atualizar o esquema do destino, você tem duas opções. Você pode atualizar o esquema diretamente na janela de comparação entre esquemas ou usando o Transact-SQL editor. Esta seção descreve as duas opções.

Depois de executar a comparação de esquema, as diferenças estruturais aparecem na tabela na janela comparar do esquema. Para cada objeto a CompareProjectDB (banco de dados de origem) coluna, a tabela exibe uma ação no A ação de atualização coluna que seria necessária para sincronizar esse objeto em dois bancos de dados. Nesse caso, porque o destino estiver vazio, exceto para objetos padrão, o Status coluna contém principalmente novos status e o A ação de atualização coluna contém principalmente de criar ações.

Gravar atualizações destino

Você pode atualizar o esquema de destino usando as ações de atualização listadas na janela comparar do esquema. Para executar essa tarefa, siga as etapas na Atualizações de gravação para o banco de dados de destino.

Exibir o Script e então escreva atualizações para o destino

Exportar um script de atualização, examiná-lo, possivelmente alterá-lo e usá-lo a sincronizar o banco de dados de destino. Para executar essas tarefas, siga as etapas na Examine e Execute o Script de sincronização.

Gravar atualizações de banco de dados de destino

ObservaçãoObservação

Antes de escrever as atualizações em um servidor de desenvolvimento ou de produção, você deve considerar o backup de seu banco de dados de destino. Porque algumas alterações de esquema não podem ser executadas em uma única transação, você poderá perder dados se você iniciar e, em seguida, cancelar uma operação de atualização. Por exemplo, uma tabela do banco de dados de destino pode ter sido abandonada em preparação para sua recriação. Se você cancelar a atualização nesse momento, você poderá perder a tabela. Esta explicação passo a passo, você está atualizando um banco de dados de desenvolvimento vazio. Portanto, você não faça backup do banco de dados de destino.

Para gravar atualizações no banco de dados de destino

  1. Na lista de resultados de comparação, vá para a SQL arquivos nó.

  2. O arquivo CompareProjectDB e o arquivo CompareProjectDB_Log, altere a ação de atualização de criar para ignorar.

    ObservaçãoObservação

    Se você comparar os dois bancos de dados no mesmo servidor de banco de dados, a sincronização falhará porque os arquivos de dados e log de destino já existem e estão sendo usados pelo banco de dados de origem. Para esta explicação, basta ignorar as atualizações para os arquivos e sincronizar o conteúdo do banco de dados.

  3. Para o arquivo de EmptyDB e arquivo de emptydb_log, altere a ação de atualização de soltar para ignorar.

    ObservaçãoObservação

    Porque você não está criando os arquivos do banco de dados de origem, você não deve excluir os arquivos do banco de dados de destino. Para esta explicação, basta ignorar as atualizações para os arquivos e sincronizar o conteúdo do banco de dados.

  4. Sobre o Esquema comparar barra de ferramentas, clique em Gravar atualizações.

    As ações de atualização foram listadas na janela comparar de esquema são executadas. Essa sincronização altera o esquema de destino para coincidir com a fonte.

    ObservaçãoObservação

    Enquanto ocorre a ação de atualização, você pode cancelar a operação, abrindo o dados menu, apontando para Esquema comparare em seguida, clicando em Parar a gravação destino.

    Se você deseja executar a comparação novamente para verificar se as atualizações selecionadas foram aplicadas, você pode clicar em Atualizar sobre o Esquema comparar barra de ferramentas.

Examine e Execute o Script de sincronização

Para examinar o script de sincronização

  1. Sobre o dados , aponte para Esquema comparar, aponte para Exportar parae, em seguida, clique em Editor.

    Como alternativa, você também pode clicar em Exportar para o Editor sobre o Esquema comparar barra de ferramentas.

    O Transact-SQL editor abre no modo desconectado e exibe o Transact-SQL sincronização script. Esta janela possui um nome como, por exemplo, Server.CompareProjectDB - SchemaUpdate_EmptyDB_1.sql. e exibe o Transact-SQL script. Como você tem acesso de leitura e de gravação nesta janela, você pode alterar o script. Se você alterá-lo, abra o arquivo menu e clique Salvar. Quando você salva o arquivo, você pode especificar o caminho e o nome.

  2. No Editor do Transact-SQL barra de ferramentas, clique em Modo SQLCMD.

    Se você não habilitar o modo SQLCMD, erros será exibido quando você tenta executar o script.

  3. Para sincronizar os esquemas de dois bancos de dados, execute este script, clicando em SQL executar na sql Transact Editor barra de ferramentas ou pressionando F5.

    O Connect to Database caixa de diálogo aparece.

  4. Clique na conexão que corresponde ao banco de dados de EmptyDB e, em seguida, clique em OK.

    Aviso

    Se você tentar executar o script de atualização um banco de dados diferente, poderá causar resultados que não pretendia.

    A comparação não é atualizada automaticamente. Se você deseja executar a comparação novamente para verificar se as atualizações selecionadas foram aplicadas, você deve clicar em Atualizar sobre o Esquema comparar barra de ferramentas.

Próximas etapas

Agora, você pode comparar os dados de dois bancos de dados. Para obter mais informações, consulte Como: Comparar e sincronizar os dados de dois bancos de dados.

Consulte também

Tarefas

Como: Comparar e sincronizar os dados de dois bancos de dados

Como: Comparar os esquemas de banco de dados

Demonstra Passo a passo: Comparando os dados de dois bancos de dados

Demonstra Passo a passo: Comparando os esquemas de um projeto de banco de dados e o banco de dados

Conceitos

Comparar e sincronizar os dados em um ou mais tabelas com dados em um banco de dados de referência

Criação e gerenciamento de bancos de dados e aplicativos de camada de dados em Visual Studio