- Propósito
- Dependências
- Bases
- CI/CD
- Resultados
- Considerações
- Tutoriais e apresentações
- Pesquisas e soluções de problemas
- Contribuição
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.
- 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
- Projeto: PocSSDT.DataBase (Visual Studio SQL Server Project)
- Servidor: server001
- Bases: ssdt001
- Usuario/senha: usrssdt/*******
Será realizado via Azure DevOps, em Build e Release
- 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).
- 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.
- 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.
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.
- SQL Server Data Tools Team Blog (MSDN)
- SQL Server Data Tools for Visual Studio (Channel 9)
- SQL Server Data Tools in your DevOps pipeline (Channel 9)
- Database Continuous Integration with Visual Studio SQL Server Data Tools (Youtube)
- Delivering databases migrations vs state
- An overview of SSDT
- Continuous Integration with SQL Server Data Tools in Visual Studio 2017
- Including Data in a SQL Server Database Project
- Manage lookup data using SQL Server Data Tools (SSDT)
- Basic Database Continuous Integration and Delivery (CI/CD) using Visual Studio Team Services (VSTS)
- Deploy: Azure File Copy
- VSTS Run Powershell on Target Machines - Access is Denied error
- Rolling back a failed DACPAC with SqlPackage.exe
Se deseja contribuir saiba mais sobre a formatação do arquivo README, veja em Guia de Sintax