Skip to content

PoC of DevOps to SQL Server Dababase projects using SSDT

License

Notifications You must be signed in to change notification settings

renanlq/devops-ssdt-poc

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

POC - SQL Server Data Tools (pt-br)

Sumário

Propósito

Propósito deste projeto é realizar testes usando da ferramenta SSDT para a realização de sincronismo entre bases, mediante atividade da equipe de BI. Atividades e dúvidas que serão atacadas nesta prova de conceito são:

  • Definir ambientes de dev, inicio e fim de deploys
           R - Criados bancos ssdt_0X, porém, o desenvolvimento acontece offline (local) na máquina do desenvolvedor.

  • É necessária adição da criação de schema?
           R - Configurado em propriedades no projeto do Visual Studio.
           TODO: Averiguar se configuração (Project Settings > General > Default schema) supre necessidade de informar schema.

  • Criação/alteração de estrutura (tables, columns)
           R - Executada integração VSTS com nome de banco não existente, banco, tabelas e procedimentos criados a partir do nome configurado na tarefa de release do VSTS. Para banco já existente, apenas tabelas e procedimentos foram adicionados.

  • Input de dados (insert)
           R - Podem ser incluídos scripts de pré e post deploy no projeto de Data Base, dessa forma podem ser executados scripts antes ou depois da migração das estruturas da base em questão.

  • Alteração de estrutura/input de dados (insert - ex. domínios)
           R - Foi possível a alteração da estrutura de uma tabela mesmo com erro no script de post deployment, dessa forma ainda precisamos avaliar a possibilidade de rollback no próprio passo de CD.

  • Criação/alteração de programáticas (view, proc e func)
           R - Alteração de programáticas se dá da mesma forma da estrutura de tabelas, CI/CD não valida se procedure, por exemplo, não possui todos os campos de tabela previamente alterada.

  • Criação/alteração de índices (tabelas populadas)
           R - Realizei um teste simples criando um índice clusterizado, a build apresentou erro uma vez que não se pode ter mais de um por tabela, existe validação em ponto de build.
           TODO: verificar mais necessidades.

  • Dentro/fora de projeto web (trigger no VSTS)
           R - É algo a ser avaliado em cada situação, ex. uma aplicação não deve possuir scripts que possam estar contidos em outra aplicação.
          

  • Importar para projeto Banco de Dados já existente
           R - Importação foi realizada sem problemas após permissões adicionadas ao usuário de teste.

  • Possível utilização do Visual Studio Code para desenvolvimento de banco?
           R - Sim, uma vez que as alterações a serem promovidas são aquelas que estão sendo enviadas para o repositório Git. Extensão MSSQL para VSCode auxilia nas atividades realizando conexões com bases (MSSQL, Azure ...), auxílio a escrita de T-SQL com intellisense, entre outras features.

Dependências

  • Pacotes/frameworks:
    • Nome: SQL Server Data Tools
    • Erro de instalação: caso tenha problemas com a instalação, erro: Recursion too deep; the stack overflowed (0x800703E9), veja solução adicionada ao stackoverflow

Bases

  • Projeto: PocSSDT.DataBase (Visual Studio SQL Server Project)
  • Servidor: server001
  • Bases: ssdt001
  • Usuario/senha: usrssdt/*******

CI/CD

Será realizado via Azure DevOps, em Build e Release

Resultados

  1. Resultados iniciais demonstram que estando bem alinhado entre as células de BI as responsabilidades entre as bases, é possível a manutenção de projetos de banco de dados a partir de Projeto Data Base do Visual Studio utilizando da extensão SSDT (Sql Server Data Tools).
  2. Controle de versionamento utilizando Git garante identificação de problemas de conflito entre versões e evita sobrescrita de alterações por parte de colaboradores/fornecedores, o que se torna uma ferramenta essencial na gestão de nossas bases e evita aquele temido ".bkp" em diretórios espalhados em computadores e servidores da organização.
  3. Processos de CI/CD tem suas particularidades com relações às configurações nas VMs dentro do Azure (VNET e WinRM). Este mesmo processo auxilia os times com feedback imediato a cada nova versão da base, o que ajuda na identificação e resolução de forma mais ágil.

Considerações

SSDT realiza a manutenção baseada no estado entre projeto de banco de dados (offline - Visual Studio) e banco de destino (realizado via CD no VSTS), resultado gera o script de alteração (.DACPAC) para que o banco de destino esteja de acordo com o do projeto, dessa forma ajuda na manutenção de bases mantendo elas sincronizadas e não necessidade de intervenção manual e dependência de banco provisionado para desenvolvimento, podendo o desenvolvedor criar uma base local para auxiliar suas tarefas.

Tutoriais e apresentações

  1. SQL Server Data Tools Team Blog (MSDN)
  2. SQL Server Data Tools for Visual Studio (Channel 9)
  3. SQL Server Data Tools in your DevOps pipeline (Channel 9)
  4. Database Continuous Integration with Visual Studio SQL Server Data Tools (Youtube)

Pesquisas e soluções de problemas

Contribuição

Se deseja contribuir saiba mais sobre a formatação do arquivo README, veja em Guia de Sintax

About

PoC of DevOps to SQL Server Dababase projects using SSDT

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages