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 |
---|---|---|---|
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.
Importante |
---|
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. |
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 |
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 |
Observaçã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
Comparar e sincronizar os dados em um ou mais tabelas com dados em um banco de dados de referência
Você pode usar a comparação de dados para sincronizar dados entre tabelas em bancos de dados de origem e destino.Renomear todas as referências a um objeto de banco de dados
Você pode usar a refatoração para renomear todas as referências a um objeto de banco de dados. Quando você criar e implantar, o log de refatoração é usado para preservar a intenção de suas alterações e reduzir o risco de perda de dados.Criar e implantar os bancos de dados para um ambiente de desenvolvimento isolado
Você pode atualizar o banco de dados de destino usando a comparação entre esquemas, mas as equipes considere alterar o projeto de banco de dados e criando e implantando a essas alterações em seu banco de dados de destino. Se esta prática, você pode preservar a intenção de quaisquer operações de refatoração que podem ser executadas no projeto de banco de dados. Você também pode reduzir o risco de ter suas alterações, substituídas por outro membro da equipe que também usa o esquema comparar para atualizar seu banco de dados.
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. |