Comparar e sincronizar 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

Você pode usar Visual Studio Premium ou Visual Studio Ultimate para comparar uma destino esquema com um fonte esquema. Para cada diferença, você pode especificar se deseja atualizar o destino para que corresponda à fonte de. Você pode escrever essas atualizações diretamente para o destino, ou você pode exportar o script de atualização para o Transact-SQL editor ou para um arquivo. Você também pode salvar as comparações, como parte do seu projeto de banco de dados ou como um arquivo autônomo. Salvando seus comparações, você pode repeti-los mais facilmente ou ressincronizar a mesma origem e destino.

Tipos de comparações de esquema

Você pode comparar as seguintes entidades que contêm definições de esquema do banco de dados:

  • SQL Serverbanco de dados - um banco de dados que é executado em um SQL Server 2008 ou SQL Server 2005 instância

  • Projeto de banco de dados - um projeto que contém definições para um SQL Server 2008 ou SQL Server 2005 banco de dados e produz um arquivo de .dbschema quando compilado

  • Projeto de servidor - um projeto que contém definições para os objetos de servidor e no 'mestre' banco de dados em um SQL Server 2008 ou SQL Server 2005 server e produz um .dbschema de arquivo quando criado

  • Projeto de componente (DAC) de aplicativo de camada de dados - um projeto que produz um arquivo de .dacpac quando compilado

  • arquivo de .dbschema - a saída quando você constrói um projeto de banco de dados ou servidor

  • arquivo de .dacpac - a saída quando você constrói um projeto de componente (DAC) do aplicativo de camada de dados

A tabela a seguir mostra os tipos de esquemas que você pode comparar e se você pode escrever as atualizações para o destino:

Fonte para baixo,

Através de destino

SQL Serverbanco de dados

Projeto de banco de dados

arquivo de .dbschema

Projeto de servidor

Projeto DAC

arquivo de .dacpac

SQL Serverbanco de dados

Compare + atualizar

Compare + atualizar

Compare

Compare + atualizar

Compare

Compare

Projeto de banco de dados

Compare + atualizar

Compare + atualizar

Compare

Nenhum

Nenhum

Nenhum

arquivo de .dbschema

Compare + atualizar

Compare + atualizar

Compare

Compare + atualizar

Nenhum

Nenhum

Projeto de servidor

Compare + atualizar

Nenhum

Compare

Compare + atualizar

Nenhum

Nenhum

Projeto DAC

Compare

Nenhum

Nenhum

Nenhum

Compare + atualizar

Compare

arquivo de .dacpac

Compare

Nenhum

Nenhum

Nenhum

Compare + atualizar

Compare

Para ler esta tabela, localize a linha para o esquema de fonte na coluna mais à esquerda. Em seguida, localize a coluna para o esquema de destino na linha superior. Interseção da coluna e de linha fornece informações sobre como se só é possível comparar a origem e destino, ou se você compara e, em seguida, opcionalmente, atualizar o esquema de destino.

Você não pode comparar um esquema de servidor para um esquema de banco de dados ou um esquema de banco de dados para um esquema de servidor. Isso inclui esquemas na forma de um arquivo .dbschema. Por exemplo, você pode comparar um projeto de servidor para um arquivo de .dbschema que foi criado a partir de um projeto de servidor.

Você pode comparar dois projetos de banco de dados somente se eles estão contidos na mesma solução em Visual Studio.

Aviso

Embora você pode comparar um banco de dados de origem com um destino o projeto de banco de dados (.dbproj), em vez disso, você deve alterar o projeto de banco de dados e implantar essas alterações no banco de dados. Quando você altera o projeto (.dbproj) e, em seguida, implantá-lo, reduzir o risco de suas alterações conflitantes com as alterações que outro membro da equipe feita porque o projeto está sob controle de versão.

Prevenção de perda de dados ao atualizar os esquemas de banco de dados

Quando você usa o esquema comparar para atualizar os esquemas de banco de dados, você pode causar a perda de dados. Para evitar perda de dados, você deve prestar atenção extra para os nomes de objetos em sua origem e destino, especialmente antes você atualizar o esquema no destino.

Por exemplo, você pode renomear uma tabela de Detalhes_Pedido para OrderDetails no banco de dados de origem, mas não o banco de dados de destino e compare os dois bancos de dados. Antes de sincronizá-los, os dados em ambas as tabelas são idênticos. Entretanto, quando você atualizar o destino, a tabela Detalhes_Pedido é excluída e uma tabela OrderDetails é criada. Você pode perder todos os dados na tabela Detalhes_Pedido.

Para ajudar a evitar a perda de dados, você pode abrir o Ferramentas menu, clique em Opçõese selecione o atualizações de esquema do bloco se poderá ocorrer perda de dados caixa de seleção. Além disso, sempre faça backup do banco de dados antes de escrever as atualizações a ele. Você também pode especificar opções para uma comparação quando você compara os esquemas. Para obter mais informações, consulte Como: Definir opções para comparar os esquemas de banco de dados.

Observação importanteImportante

Se você usar a refatoração para renomear objetos no seu projeto de banco de dados, o log de refatoração também ajuda a evitar a perda de dados quando você criar e implantar o banco de dados. Esse log preserva a intenção de suas alterações. Por exemplo, as tabelas podem ser renomeadas no lugar.

Diferenças entre o comparar de esquema e implantação Incremental

Ao implantar atualizações em um banco de dados existente, o processo é muito semelhante ao processo, quando você usa o esquema comparar para sincronizar dois esquemas de banco de dados. Entretanto, a comparação entre esquemas tem uma diferença importante: Por padrão, o esquema comparar ignora propriedades estendidas.

Você pode alterar as opções de comparação entre esquemas, para todas as sessões de esquema comparar ou para a sessão atual, se você não deseja ignorar as permissões e propriedades estendidas. Para obter mais informações, consulte Como: Definir opções para comparar os esquemas de banco de dados.

Tarefas comuns

A tabela a seguir, você encontrará descrições de tarefas comuns que oferecem suporte a esse cenário e links para obter mais informações sobre como você pode concluir com êxito essas tarefas.

Tarefas comuns

Conteúdo de apoio

Obtenha a prática: Você pode seguir as orientações passo a passo introdutória para se familiarizar com como comparar dois bancos de dados ou um banco de dados e um projeto (.dbproj).

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

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

Definir opções para controlar como os esquemas são comparados: Você pode configurar os detalhes que controlam como os esquemas são comparados. Você pode ignorar a tipos específicos de diferenças, como, por exemplo, espaço em branco, os grupos de arquivo e comentários. Você também pode ignorar a categorias de objetos, como, por exemplo, usuários ou logons. Você pode especificar as opções que controlam o script de atualização gerados.

Como: Definir opções para comparar os esquemas de banco de dados

Comparar objetos de banco de dados ou servidor e, opcionalmente, atualizar o destino para coincidir com a fonte: Você especificar um esquema de origem e destino para comparar e os resultados são exibidos na janela comparar do esquema. Você pode exibir detalhes sobre as diferenças e o script de atualização será usado para sincronizar o banco de dados. Você pode salvar cada comparação de esquema ao seu projeto ou em um arquivo autônomo de .scmp. Você especificar ações para cada diferença entre a origem e os esquemas de destino e, em seguida, você pode escrever as atualizações para o destino. Você também pode exportar o script de atualização para o Transact-SQL editor ou para um arquivo para que você possa revisá-lo antes de aplicar as alterações para o destino.

Como: Comparar os esquemas de banco de dados

Noções básicas sobre os resultados da comparação de esquema

Solucionar problemas: Você pode saber mais sobre como solucionar problemas comuns que você pode encontrar ao comparar e sincronizar esquemas de banco de dados.

Solucionando problemas de comparação de esquema

Noções básicas sobre os resultados da comparação de esquema

A janela de esquema comparar exibe quatro colunas para cada objeto que é comparado. A tabela a seguir descreve o conteúdo de cada coluna.

Coluna

Valores

Status

  • Igual – O objeto tem a mesma definição e contém os mesmos objetos no esquema de fonte e o esquema de destino.

  • Novo – O objeto existe no esquema de origem, mas não no esquema de destino.

  • Faltando – O objeto existe no esquema de destino, mas não no esquema de fonte.

  • Uma definição diferente – O objeto tem uma definição diferente do esquema de origem que no esquema de destino.

  • Tem a mesma definição de dependências diferentes – O objeto, mas contém diferentes objetos no esquema de fonte e o esquema de destino.

Por exemplo, você pode alterar a definição de uma tabela no esquema de fonte, mas não o esquema de destino e depois compará-los. As tabelas serão marcadas como definição diferente, e o esquema que contém essas tabelas será marcado como dependências diferentes.

SourceName (origem {o projeto, o banco de dados ou o arquivo de projeto (.dbschema)})

O nome do arquivo de projeto que você está comparando, banco de dados ou projeto de origem.

Atualizar ação

  • Ignorar – O objeto não será atualizado no esquema de destino. Se o objeto tiver dependências que foram alterados, o ícone indica que você deve expandir esta linha para ver o objeto referenciado que é diferente.

  • Ignorar mencionado – O objeto existe em um banco de dados referenciado e não precisa ser descartado ou criado.

  • Criar – O objeto será criado quando você escreve atualizações ou ao executar o script de atualização.

  • Atualizar – A definição do objeto será atualizada para coincidir com o esquema de fonte quando você escreve atualizações ou ao executar o script de atualização.

  • Soltar – O objeto será removido do esquema de destino quando você escreve atualizações ou ao executar o script de atualização.

ObservaçãoObservação
A ação padrão é determinada pelo status.Para objetos de iguais, a ação padrão é ignorar e você não pode alterá-lo.Para novos objetos, a ação padrão é criar, mas você pode especificar a ignorar.Para objetos ausente, a ação padrão é soltar, mas você pode especificar a ignorar.Para obter uma definição diferente, a ação padrão é a atualização, mas você pode especificar a ignorar.Para objetos diferentes, a ação padrão é ignorar e você não pode alterá-lo (nesse caso, o objeto é igual, mas ele contém objetos que são novos, ausentes ou alterados).

TargetName (destino {o projeto, o banco de dados ou o arquivo de projeto (.dbschema)})

O nome do arquivo de projeto que você está comparando, banco de dados ou projeto de destino.

Cenários relacionados

Histórico de alterações

Date

History

Motivo

Junho de 2010

Adicionadas informações sobre como ler a primeira tabela no tópico para comentários do cliente de endereço.

Comentários do cliente.

Agosto de 2010

Esclarecida a projetos podem ser comparados somente se eles estão contidos na mesma solução.

Comentários do cliente.