Como: Comparar os esquemas de banco 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

Usando Visual Studio Premium ou Visual Studio Ultimate, você pode comparar dois banco de dados esquemas. Desses esquemas podem ser representados por um banco de dados, um aplicativo de camada de dados o projeto, um o projeto de banco de dados, ou a saída de construção de um projeto de banco de dados (um arquivo de .dbschema). As entidades que você compare são conhecidas como o fonte e o destino. Quando a comparação de esquema for concluída, seus resultados aparecem na Esquema comparar janela. Além disso, Visual Studio gera um Data Definition Language script (DDL) que você pode usar para sincronizar os esquemas diferentes.

Se você planeja comparar um projeto de banco de dados para um banco de dados de destino de forma recorrente, você pode adicionar a comparação de esquema ao seu projeto de banco de dados. Em seguida, você pode re-compare os esquemas por reabrir essa comparação. Salvando uma comparação de esquema, você pode salvar informações de conexão, opções específicas de sessão e valores para variáveis SQLCMD. Os resultados não são salvas e ser regerados quando você abrir o arquivo .scmp para a comparação de esquema salvo.

Após a conclusão de comparação, você pode seguir outras etapas:

  • Você pode exibir as diferenças estruturais entre dois bancos de dados. Para obter mais informações, consulte Exibir diferenças de esquemas.

  • Você pode clicar em Atualizar o Script de atualização para ver o script completo que será usado para sincronizar os esquemas, se você decidir fazer isso.

  • Você pode atualizar o destino para coincidir com a fonte inteiro ou parte. Para obter mais informações, consulte Sincronizando o banco de dados ou objetos de servidor.

  • Você pode comparar os dados que residem no destino e origem. Para obter mais informações, consulte Como: Comparar e sincronizar os dados de dois bancos de dados.

Para obter mais informações sobre cenários de comparação de esquema, consulte Comparar e sincronizar esquemas de banco de dados.

Você também pode comparar arquivos de .dbschema em um prompt de comando usando o VSDBCMD.EXE. Você pode fazer isso, por exemplo, para gerar um script de atualização para atualizar um banco de dados de destino quando você não tem acesso direto ao servidor de destino.

Neste tópico

Para comparar dois esquemas usando a comparação entre esquemas

  1. Se você quiser comparar dois esquemas, mas não salvar as configurações como parte do seu projeto de banco de dados, execute as seguintes etapas:

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

    2. Vá para a etapa 3.

  2. Se você quiser comparar dois esquemas e salve as configurações como parte do seu projeto de banco de dados, execute as seguintes etapas:

    1. Em Solution Explorer, com o botão direito do Comparações de esquema pasta, aponte para Adde clique em Comparação do esquema.

      O Add New Item caixa de diálogo aparece.

    2. Em nome, digite o nome que você deseja dar a comparação de esquema e, em seguida, clique em Add.

  3. Especifique a origem e o destino que você deseja comparar clicando em projeto, banco de dados, ou arquivo de esquema do banco de dados para cada esquema.

    ObservaçãoObservação

    Você pode especificar um arquivo de esquema de banco de dados para o esquema de destino, mas não é possível atualizá-lo. Para obter uma lista completa dos cenários de comparação com suporte, consulte Comparar e sincronizar esquemas de banco de dados.

  4. Se você clicou em banco de dados para a origem ou destino, se conectar à fonte de dados clicando na lista.

    Se o seu banco de dados não estiver listado, clique em Nova conexão. No Propriedades de conexão diálogo caixa, identificar o servidor no qual reside a origem ou destino e o tipo de autenticação a ser usado quando você conectá-lo. Opcionalmente, clique em um banco de dados nesse servidor. 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.

  5. Se você clicou em arquivo de esquema do banco de dados a origem ou destino, digite o caminho e nome de arquivo ou clique em Procurar para especificar um arquivo.

  6. (opcional) 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ção importanteImportante

    Por padrão, o esquema comparar sessões usam as opções que você configura quando você abrir o Ferramentas menu e clique Opções. Se não desejar ignorar as propriedades estendidas, clique em Opções para alterar a configuração correspondente. Para obter mais informações sobre as opções de configuração para a comparação entre esquemas, consulte Como: Definir opções para comparar os esquemas de banco de dados.

  7. (opcional) Clique em SQLCMD variáveis para especificar um arquivo de .sqlcmdvars contém uma lista de variáveis e seus valores.

    ObservaçãoObservação

    Você só pode especificar variáveis SQLCMD ao comparar dois projetos (projetos de banco de dados, projetos de servidor ou projetos de aplicativos de camada de dados).

    Os valores serão substituídos no projeto de banco de dados correspondente quando os esquemas são comparados.

  8. Clique em OK.

    A comparação de esquema é iniciado.

    ObservaçãoObservação

    Você pode interromper uma comparação que está em andamento clicando em Parar na barra de ferramentas.

Para comparar os esquemas usando o modelo de automação de Visual Studio

  1. Abrir o Exibir , aponte para Other Windowse clique em A janela de comando.

  2. Na janela de comando, digite o seguinte comando:

    Data.NewSchemaComparison sourceIdentifier targetIdentifier
    

    Substitua sourceIdentifier com um dos seguintes:

    • / ProviderType ConnectionBased /ConnectionString "myConnectString"

    • / ProviderType ConnectionBased /ConnectionName myConnectionName

    • / ProviderType ProjectBased /ProjectName myFileName.dbproj

    • / ProviderType FileBased /ProjectName myFileName.dbschema

    • / ProviderType FileBased /ProjectName myFileName.dacpac

    Substitua targetIdentifier com um dos seguintes:

    • / ProviderType ConnectionBased /ConnectionString "myConnectString"

    • / ProviderType ConnectionBased /ConnectionName myConnectionName

    • / ProviderType ProjectBased /ProjectName myFileName.dbproj

    • / ProviderType FileBased /ProjectName myFileName.dbschema

    • / ProviderType FileBased /ProjectName myFileName.dacpac

    Se você não especificar uma origem e um destino, o Comparação do novo esquema caixa de diálogo aparece. Para obter mais informações sobre os parâmetros para o comando Data.NewSchemaComparison, consulte Referência de comando de automação para recursos de banco de dados de Visual Studio.

    Os objetos e configurações de origem especificado e de destino são comparadas. Os resultados aparecem em uma sessão de comparação entre esquemas que você pode salvar opcionalmente. Para obter mais informações sobre como exibir os resultados ou sincronizar os esquemas, consulte Exibir diferenças de esquemas e Sincronizando o banco de dados ou objetos de servidor.

Para salvar uma comparação de esquema pela primeira vez

  1. Sobre o arquivo menu, clique em Salvar SchemaComparisonName.scmp.

    O Salvar arquivo como abre a caixa de diálogo.

  2. Especifique o caminho e o nome do arquivo para a comparação de esquema.

    Se a comparação é parte do seu projeto de banco de dados, a comparação será salvo na pasta SchemaComparisons do projeto.

  3. Clique em Save.

    A comparação de esquema é salvo no local que você especificou.

Diferenças de esquemas de exibição

Você pode determinar como um esquema de fonte difere um esquema de destino, comparando-as e exibindo os resultados como uma árvore de Esquema comparar janela. Por exemplo, você pode mostrar somente aqueles objetos que existem na fonte, mas não no destino. Você também pode exibir detalhes sobre objetos como particular diferem, e você pode atualizar os resultados para refletir alterações recentes.

Você também pode exibir os resultados como Transact-SQL comandos em um script que deseja sincronizar o destino com o código-fonte. Você pode exibir este script de Script de atualização do esquema janela ou o Transact-SQL editor e você também pode exportar o script para um arquivo. Se você decidir atualizar o destino para coincidir com a fonte, imediatamente, você pode executar o script para sincronizar os esquemas, ou você pode modificar o script e, em seguida, executá-lo. Para obter mais informações, consulte Sincronizando o banco de dados ou objetos de servidor.

Para filtrar os resultados por tipo

  1. Sobre o Esquema comparar barra de ferramentas, clique em filtro.

  2. Clique em um ou mais filtros para especificar que conjuntos de resultados que você deseja exibir.

    ObservaçãoObservação

    Configurações de filtro são salvas com o arquivo .scmp e persistem quando você alterar os esquemas de origem e destino.

Para exibir as alterações dentro de uma definição de objeto

  • Clique em qualquer linha na grade de onde o status é novo, ausente ou diferentes pela forma.

Para atualizar os resultados de comparação

  • Sobre o Esquema comparar barra de ferramentas, clique em Atualizar.

    A origem e destino são comparadas novamente e os resultados da comparação são atualizados.

Para exibir o script de sincronização

  • Sobre o dados , aponte para Esquema comparare clique em Mostrar o Script de atualização de esquema.

    ObservaçãoObservação

    Se Mostrar o Script de atualização de esquema está disponível, qualquer um dos scripts não podem ser geradas para o destino especificado ou que a comparação precisa ser atualizado. Por exemplo, se o esquema de destino for um arquivo de .dbschema, você não pode criar um script de atualização.

    O O Script de atualização de esquema janela é exibida e mostra o script para que você pode usar para atualizar o destino para coincidir com a fonte.

    ObservaçãoObservação

    Se o Script de atualização do esquema janela aberta, você também pode clicar em Atualizar Scripts de atualização do esquema.

Para abrir o script de sincronização no editor de Transact-SQL

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

    O Transact-SQL editor aparece e mostra o script que você pode usar para atualizar o destino para corresponder à origem.

Para salvar o script de sincronização para um arquivo.

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

    O Salvar Script de atualização de esquema caixa de diálogo aparece.

  2. Em nome do objeto, digite o nome que você deseja atribuir o script de sincronização e, em seguida, clique em Salvar.

    O script é salvo com o nome de arquivo que você especificou.

Sincronizando o banco de dados ou objetos de servidor

Após você comparar os esquemas de origem e destino, você pode sincronizar um esquema inteiro ou somente o os objetos de banco de dados que você especificar dentro desse esquema. Para obter mais informações, consulte Comparar e sincronizar esquemas de banco de dados.

Se a origem e destino estiverem no mesmo servidor, pode ocorrer um erro ao tentar sincronizar os esquemas. O erro ocorre porque os arquivos de destino, como, por exemplo, arquivos de grupo de arquivos, não podem ser criados com o mesmo nome de origem, pois já existem no servidor. Para resolver esse problema, altere o A ação de atualização para Ignorar para os arquivos que estão em conflito.

ObservaçãoObservação

Os bancos de dados que você compare são conhecidos como o fonte e o destino. Quando você sincroniza os esquemas de banco de dados, atualize o destino e deixar a fonte inalterada. Embora você possa especificar um arquivo de projeto (.dbschema) como o destino, é possível atualizar um arquivo de projeto.

Para atualizar o esquema de destino

  1. Compare dois esquemas.

    Após a conclusão de comparação, o Esquema comparar janela lista os objetos de banco de dados que foram comparados. Cada linha representa um objeto de banco de dados.

  2. (Opcional) No A ação Atualizar coluna, especifique se deseja aplicar ou ignorar a atualização a cada objeto na lista de resultados.

    Ações de sincronização individuais não são executadas imediatamente mas armazenadas para execução de lote na etapa seguinte.

    ObservaçãoObservação

    Para redefinir o A ação de atualização coluna para todos os objetos de um determinado tipo, clique com o botão direito no nó do tipo (por exemplo, o nó tabelas) e clique em Restaurar padrões. Para definir o A ação de atualização coluna para todos os objetos de um tipo específico para um estado específico, clique com o botão direito no nó para o tipo e clique em Criar todos os, Atualizar tudo, ou Ignorar tudo.

  3. Para sincronizar objetos de banco de dados que estão faltando, novo ou diferente, siga um destes procedimentos:

    • Para atualizar o destino imediatamente, clique em Escrever atualiza.

      Exceto para objetos marcados como Ignorar, essa opção aplica o esquema dos objetos de banco de dados selecionados na fonte de objetos correspondentes no destino. Essa sincronização significa atualizar, criar ou descartar o objeto de destino.

      Observação importanteImportante

      Enquanto o esquema está sendo atualizado, você pode cancelar a operação clicando em Parar a gravação destino. Se você interromper a atualização, não há alterações são propagadas para a maioria dos tipos de objeto. No entanto, alterações parciais para objetos de usuário e a função não podem obter revertidas porque esses objetos não podem ser dispostos em transações.

    • Para revisar as alterações antes de atualizar o destino, use o Script de atualização do esquema janela ou clique em Exportar para o Editor de.

      Essa opção gera um Transact-SQL de script e o abre em uma Transact-SQL janela do editor. Você pode revisar e, se necessário, modifique o script antes de executá-lo contra o destino. Gerado Transact-SQL script coincide com o script que executaria caso tenha clicado em Atualizações de gravação.

      ObservaçãoObservação

      Visual Studionão atualiza automaticamente os resultados que aparecem na Esquema comparar janela após a Atualizações de gravação concluir a ação. Em vez disso, a barra de status é atualizada para sugerir que você clique em Atualizar. Esse comportamento lhe dá a opção Comparar esquemas novamente, uma ação que poderia levar um longo tempo, se os esquemas são grandes.

    • Para salvar as alterações sem visualizá-las em um arquivo de Transact-SQL editor, clique em Exportar para arquivo.

      Essa opção gera um Transact-SQL de script e salva-o ao nome do arquivo que você especificar. O script gerado corresponde ao script que executaria caso tenha clicado em Atualizações de gravação. Você pode levar a essa abordagem se outra pessoa atualizará o destino posteriormente com o script que você fornecer, ou se devem ser feitas alterações adicionais para o script por outra pessoa.

Compare os esquemas usando VSDBCMD.EXE

Você talvez queira gerar um script de implantação para um banco de dados ao qual você não tem acesso. Você pode realizar essa tarefa usando o VSDBCMD.EXE se você tiver o arquivo .dbschema para o projeto que você deseja implantar e o .dbschema que representa o estado atual do banco de dados de destino. Se você não tem o esquema de destino, você pode pedir seu administrador de banco de dados para importá-lo para você, usando o segundo procedimento nesta seção.

Você pode executar os procedimentos em qualquer computador que tenha o VSDBCMD.Ferramenta EXE e os arquivos de suporte. Você pode encontrar todos os arquivos necessários na seguinte pasta e suas subpastas: % 10.0\VSTSDB\Deploy de Visual Studio de arquivos de programas%\Microsoft do programa. Para obter mais informações, consulte Referência de linha de comando para VSDBCMD.EXE (implantação e importação de esquema).

Para comparar os esquemas em um prompt de comando

  1. Abra um prompt de comando.

  2. Alterar pastas para a pasta que contém VSDBCMD.EXE.

  3. No prompt de comando, digite o seguinte comando: vsdbcmd.exe / a: implantar /dd:-/dsp:sql /model:ProjectName.dbschema /targetmodelfile:TargetDatabase.dbschema /DeploymentScriptFile:OutputFilename. SQL /p:TargetDatabase = "TargetDatabaseName"

    Substitua ProjectName com o nome do arquivo .dbschema que você criou, construindo seu projeto de banco de dados. Substitua TargetDatabase com o nome do arquivo .dbschema que contém o esquema do banco de dados de destino. Substitua OutputFilename com o nome que você deseja dar o script de implantação. Substitua TargetDatabaseName com o nome do banco de dados que você deseja atualizar.

    ObservaçãoObservação

    Se você deseja incluir o script de pré-implantação e pós-implantação do projeto de banco de dados, você pode adicionar um parâmetro para a linha de comando: / ManifestFile:ProjectName.deploymanifest. Você pode encontrar o arquivo de .deploymanifest em uma subpasta da sql pasta sob a pasta do projeto.

  4. Agora você pode usar o OutputFilenameo arquivo. SQL para implantar atualizações para o servidor de destino, ou você pode pedir ao seu administrador de banco de dados para fazer isso.

Para importar o esquema de destino

  1. Abra um prompt de comando.

  2. Navegue até a pasta que contém VSDBCMD.EXE.

  3. No prompt de comando, digite o seguinte comando: vsdbcmd.exe / a: importar /dsp:sql /model:TargetDatabase.dbschema /cs:ConnectionString

    Substitua TargetDatabase com o nome do arquivo .dbschema que você está importando do banco de dados de destino. Substitua ConnectionString com uma seqüência de conexão ao banco de dados de destino. Por exemplo, você pode especificar /cs:"Data Source=MyServer/SQL2K8;Integrated Security=True;Pooling=False;Initial Catalog=MyDatabase".

    Quando o comando for concluído, o arquivo .dbschema é criado. Ele contém a definição de esquema do banco de dados do qual você importou. Para obter mais informações, consulte Como: Importar um esquema a partir de um Prompt de comando e Referência de linha de comando para VSDBCMD.EXE (implantação e importação de esquema).

Consulte também

Tarefas

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

Conceitos

Comparar e sincronizar esquemas de banco de dados

Histórico de alterações

Date

History

Motivo

Julho de 2010

Adicionadas informações sobre como usar o VSDBCMD.EXE para comparar os esquemas de um prompt de comando.

Comentários do cliente.