Gerência - Metodologias e Processos

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.

por Fernando Amaral



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 imagem 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 imagem 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.

Fernando Amaral

Fernando Amaral - Certificado PMP pelo PMI, CDIA+ pela CompTia, MCP, MCAD, MCSD, MCDBA, MCT pela Microsoft. Pós Graduado em Gestão de Sistemas de Informação (UNIDERP) e Melhoria em Processos de Software (UFLA). Atualmente reside em Campo Grande, MS, onde presta consultoria, treinamentos e palestras na área de TI.
Blog:
http://www.fernandoamaral.com.br.