Visual Studio Team System 2008 DataBase Edition Parte II:
Comparando Schemas
Neste segundo artigo sobre a edição DataBase do Visual
Studio Team System, vamos ver a ferramenta de comparação de schemas de banco de
dados. Antes de começar é importante você ler no artigo anterior, “Visual
Studio Team System 2008 DataBase Edition Parte I: Introdução”, algumas
consideração sobre as versões do DataBase Editon.
Para este exemplo criei duas instancias do banco de dados AdventureWorks2008
no SQL Server Express 2008, uma mantive o nome padrão, e a segunda nomeada AdventureWorks2008II.
Em seguida fiz uma pequena alteração na tabela Person.Adress
no banco AdventureWorks2008II, alterando de nvarchar(30) para nvarchar(50). O
objetivo é que a comparação de schema detecte esta diferença e possa igualar os
dois schemas:

A comparação de Schema esta disponível através do menu Data,
Schema Compare, New Schema Comparison:

É aberta a janela New Schema Comparison. De um lado devemos
escolher o schema de origem, do outro o de destino. A fonte para comparação
pode ser de um projeto, como o criado no primeiro artigo, um banco de dados ou
um schema de banco de dados. É importante entender a diferença entre Origem
(Source) e Destino (Target): Se houver diferença entre as duas fontes, o script
gerado será para tornar o destino igual à origem. Neste exemplo, vamos comparar
o banco de dados AdventureWorks2008 com seu clone alterado, AdventureWorks2008II:

Antes de clicar em Ok, vamos examinar as opções de
comparação, que podem ser visualizadas clicando-se em Options. Acima
especificamos se desejamos utilizar a colação da fonte de origem ou de destino.
Abaixo duas guias: General, com diversas opções de comparação, agrupadas em
dois grupos, e Object types, onde podemos marcar quais objetos podemos ignorar
na nossa comparação:

Para executar a comparação clique em Ok na janela de opções
e em seguida clique em ok novamente. Em seguida é apresentado o resultado da
comparação. Observe a coluna Update Action, ela informa o tipo de ação que será
executa a fim de igualar os dois schemas:
·
Skip: Significa que não há diferenças entre os objetos comparados
·
Update: Significa que será gerado um script para sincronizar o
schema alvo com o schema de origem
·
Drop: Significa que o objeto não existe no schema de origem, por
isso será gerado um script para exclusão do schema alvo
·
Create: Significa que o objeto não existe no schema de destino, por
isso será gerado um script para a criação do mesmo.

Abaixo, em Object Definitions, podemos notar que são
exibidos os scripts necessários para a sincronização das duas fontes.
Note ainda na db2imagem acima, que na linha Person.Address foi
identificada a necessidade de um Update, em Object Definition podemos ver o
tamanho do campo da coluna City marcado em azul, o que significa que há
diferença no texto.
A janela Schema Update Script deve abrir automaticamente
exibindo o script a ser utilizado na atualização.

Se a janela não estiver visível, clique em Show Update
Schema Script na barra de ferramentas Schema Compare:

Para rodar a atualização e tornar o banco de destino igual
ao de origem, você pode executar o script gerado e disponível em Schema
Update Script diretamente no SQL Server ou então clicar em Write Updates
to Target Schema na barra de ferramentas Schema Compare.

No nosso exemplo a atualização vai falhar, a mensagem
informa que pode ocorrer perda de dados, já que o script detectou que existem
dados na tabela.

Para forçar a atualização mesmo havendo dados, clique em Schema
Compare Option na barra de ferramentas Schema Compare:

Localize e desmarque a opção Block the
update if data loss might occur:

Lembre-se que estou fazendo isto apenas para um exemplo e
que você deve considerar com cuidado a possibilidade de perder dados na
alteração do schema de um banco de dados.
Clicamos novamente em Write Updates to Target Schema na
barra de ferramentas Schema Compare. Desta vez o schema é atualizado. Uma nova
comparação de schema é realizada pelo VS e, como podemos ver na db2imagem abaixo,
não são mais apontadas diferenças:

Ao fazer comparações envolvendo um projeto de banco de
dados, lembre-se que antes da geração do script de atualização do schema, todos
os erros dos projetos têm de ser removidos.
Conclusão
Neste artigo aprendemos a fazer a
comparação de schemas utilizando Visual Studio Team System 2008 DataBase
Edition 2008. Nos próximo artigo, vamos aprender a fazer comparação entre dados
de diferentes origens.