Git Product home page Git Product logo

devops-ssdt-poc's Introduction

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

devops-ssdt-poc's People

Contributors

renanlq avatar

Stargazers

Prabhugurudarshan Singh avatar Gilmar Oliveira de Assis avatar  avatar

Watchers

James Cloos avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.