Desenvolvimento

Desenvolvimento

Criação e versionamento de Databases SQL Server no VS 2017

23 mai, 2018
Publicidade

Uma feature muito interessante, presente no Visual Studio e que talvez seja um pouco desconhecida por alguns desenvolvedores, é a possibilidade de criar Database Projects (projetos de banco de dados) pela própria IDE.

Normalmente, quando se trata de banco de dados SQL Server e desenvolvimento .NET, é comum se utilizar de algum ORM, tal como Entity Framework para mapear as entidades em alguma camada, ou até mesmo utilizar o Migrations em uma estratégia de Code First. Nesse cenário, qualquer alteração efetuada no banco de dados, digamos que por um DBA ou alguém da equipe, não será refletido automaticamente no seu código fonte, levando a erros.

Uma alternativa muito interessante e recomendada em alguns projetos, seria criar um projeto de banco de dados dentro da própria solução do projeto e gerenciar os objetos e suas alterações pela IDE, fazendo uso da feature Schema Compare.

Benefícios e cenários para utilizar essa abordagem

Antes de começar a efetivamente mostrar como criar um database project, vamos visualizar os seguintes benefícios:

  • É possível criar ou atualizar os objetos do banco (tabelas, views, schemas, etc) diretamente do projeto
  • É possível versionar o seu banco de dados como parte integral da sua solução
  • É possível identificar rapidamente as alterações efetuadas no banco de dados, sabendo quem o fez e quando o fez
  • É rápido para subir uma cópia da estrutura da sua base de dados em qualquer outro local

Dados os benefícios citados acima, os cenários onde essa abordagem pode ser utilizada seria em projetos onde você já conta com uma base de dados existente e não quer utilizar da estratégia de Database First oferecida pelo Entity Framework.

Em projetos, onde a base de dados está sendo criada, o cenário pode ser utilizado também, facilitando ainda mais a rapidez na criação dos objetos. Todo código SQL ou T-SQL pode ser feito dentro do Visual Studio e depois incluso na base de dados pela conexão entre IDE e Database Server.

O que é necessário para criar um Database Project no Visual Studio 2017

Além do Visual Studio 2017 instalado (podendo ser até a versão Community), será necessário instalar o SQL Server Data Tools para Visual Studio. Na referência do artigo, você pode encontrar o link. Efetue a instalação e depois reinicie sua máquina.

O ideal é que você já tenha uma base de dados criada para prosseguirmos com o artigo. Dessa forma, iremos considerar que você já criou uma base de dados ou já tenha alguma local/remota.

Atenção: O ideal é seguir esse arquivo com uma base de testes. utilizando uma base de produção ou alguma base importante e fazendo algum procedimento errado, é passível de exclusão/alteração de objetos por falta de conhecimento na ferramenta

Criando o projeto

Após instalação do SQL Server Data Tools para criar o projeto, abra o Visual Studio, selecione “File > New > Project”.

Existe uma categoria de instalação chamada “SQL Server” e uma opção de “SQL Server Database Project”.

Para efeito de testes, utilizando o SQL Server Management Studio, crie um database de demo com uma única tabela.

No Visual Studio, abra a “Solution Explore” e clique com o botão direito do mouse em cima do projeto. Selecione a opção “Schema Compare”.

O Schema Compare é responsável por analisar o que você tem de objetos na sua solução e comparar com o que existe na base de dados. Nesse primeiro cenário, vamos analisar da base de dados para o nosso projeto local.

Do lado esquerdo temos o projeto local e ao lado direito, temos que selecionar um “Target”, ou seja, qual é a instância e banco de dados que vamos analisar.

Clique em “Select Connection”.

Em seguida, informe “Server Name”, o tipo de autenticação (usuário e senha ou Windows Authentication), senha (se houver) e qual a base de dados.

Agora, analise que temos ao lado esquerdo o caminho do nosso projeto; ao lado direito a configuração de qual database faremos conexão e comparação; no meio, o botão “Switch” que serve para trocar o tipo de visuação (Database > Fonte ou Fonte > Database). Clique no botão “Switch” para inverter a ordem. Nós olharemos do Database para o Fonte.

E o botão sinalizado em amarelo, é o botão que fará a comparação. Clique nele em seguida.

Ao realizar o “Compare” é exibida uma lista com quais objetos existem no banco de dados e não estão presentes em nosso projeto.

Para atualizar e sincronizar, clique em “Update” (sinalizado em amarelo). Agora temos a tabela “Usuario” representada em arquivo SQL em nosso projeto.

Alterando a entidade e refletindo no banco de dados

Clicando no arquivo “Usuario.sql” você poderá editar, tanto por SQL ou pela IDE as características do objeto.

Nesse caso, acrescentaremos mais uma coluna.

No Schema Compare, vamos solicitar que ele visualize do arquivo local do projeto para a base de dados.

Efetue o “Compare” e podemos ver que localmente temos diferenças mas ainda não aplicamos na base de dados.

Para isso, clique em “Update” e veja a alteração no Visual Studio:

E também no SQL Server Management Studio:

Conclusão

Nesse artigo, aprendemos como utilizar o tipo de projeto “Database Project” no Visual Studio, sendo possível criar, manipular e atualizar os objetos de uma base de dados SQL Server.

Referências

Instalação do SQL Server Data Tools para Visual Studio:

Video passo-a-passo mostrando a solução: