Post on 06-Jun-2015
description
O Futuro do Data Dude (VS DBPro)
ALM Summit Brasil 2012 – 27, 28/04/2012
@IgorAbadeblog.lambda3.com.br/L3/IgorAbade
• Introdução• Desenvolvimento Declarativo
de Banco de Dados• Desenvolvimento Conectado• Desenvolvimento baseado
em Projeto• Integração com Ciclo de Vida
da Aplicação
Agenda3
Introdução4
• Historicamente bancos de dados têm sido implementados usando ferramentas e processos desconexos do desenvolvimento de aplicações
• Difícil de implementar controle de mudança
O Problema
• Difícil de integrar o desenvolvimento de BDs na Gestão do Ciclo de Vida de Aplicações (Application Lifecycle Management - ALM)
• Hoje em dia o mesmo desenvolvedor tipicamente implementa a camada de acesso a dados e o próprio banco de dados
O Problema
• Estabelecer e suportar um Ciclo de Vida de Desenvolvimento de Bancos de Dados (Database Development Lifecycle - DDLC)– Ferramentas, metodologias e
processos para o desenvolvedor de BDs
• Integrar o DDLC ao resto do ciclo de ALM
A Solução
Database Development Lifecycle (DDLC)
• Desenvolva bancos de dados usando ferramentas e processos similares a desenvolvimento de aplicações
• Escreva código T-SQL direto no Visual Studio– Deixe o desenvolvedor declarar o que ele quer – CREATE
TABLE Clientes(…);– A ferramenta que “se vire” para descobrir como
criar/modificar o banco de dados
• Use as mesmas ferramentas de autoria e gestão de código– Controle de Versão, Refactoring, Análise de Código,
Testes de Unidade, Automação de Build
Integrando DDLC com ALM• Implemente as mudanças em cada camada da
aplicação a partir da mesma Solução do Visual Studio
• Use Controle de Versão (ex. TFS) para acompanhar e gerenciar mudanças feitas a cada camada
• Use Testes de Unidade para verificar automaticamente as interações entre aplicação/camada de negócios e o banco de dados
História do Projeto “DataDude”• Projeto fundado em Abril de 2005
– Iniciado em 1º de Julho de 2005
• Visual Studio 2005 Team System for Database Professionals
• Visual Studio Team System 2008 Database Edition• Visual Studio Team System 2008 Database Edition
GDR R2• Visual Studio 2010 Premium• SQL Server 2012 Data Tools
10
Roadmap
• Controle offline de mudanças• SQL 2000/2005• ALM para bancos de dados
VS 2005 VS 2008 “GDR” VS 2010 SSDT
• Suporte a SQL 2008• Separação de Build e Deploy• Remoção do “DesignDB”
• Suporte a SQL 2008 R2• SQL IntelliSense• Suporte a bancos de dados de
terceiros
• Introdução a projetos Data-tier Application• Projetos Data-tier Application (DAC) e
Database (SQL) operam SxS
• Suporte a SQL Azure• Designers Visuais• Mecanismo unificado de implantação• Suporte a apps missão crítica• Suporte completo a objetos SQL• Melhorias no sistema de projetos• Melhorias nas funcionalidades de ALM
SQL Server Data Tools (SSDT)
Apresentando SQL Server Data Tools12
DESENVOLVIMENTO CONECTADO
DESENVOLVIMENTO BASEADO EM PROJETO
IMPLANTAÇÃO DE SCHEMA
DESENVOLVIMENTO CONECTADO13
Drift Detection
Schema Comparison
SQL Server Object Explorer
T-SQL Editor
Table Designer
Error Information
T-SQL IntelliSense
View Code
View/Edit Data
T-SQL Debugging
DESENVOLVIMENTO BASEADO EM PROJETO14
Go To Definition
Find All References
Refactoring
Point-in-time Snapshots
T-SQL Static Code Analysis
Source Code Based
F5 Debugging & Testing with LocalDB
Source Code Control
MSBuild
Headless Command Line Tools
Visualize Schema Differences
IMPLANTAÇÃO DE SCHEMA15
Incremental IMPLANTAÇÃO DE
SCHEMA
Model Based DACPAC
SQL ScriptRetargeting Support
SQL Server 2005SQL Server 2008SQL Server 2012
SQL Azure
Format
Engine
API & REDIST
Connected
DeclarativoFormatos PadronizadosMulti-Targeting DAC
DAC
SQL Server Data Tools SQL Server Management Studio
PublicarComparar Sincronizar
ImportarExportarRegistrar
SQL Azure Management Portal
DESENVOLVIMENTO CONECTADO
DESENVOLVIMENTO BASEADO EM PROJETO
IMPLANTAÇÃO DE SCHEMA
DeclarativoFormatos PadronizadosMulti-Targeting DAC
Desenvolvimento Declarativo de Banco de Dados
18
Exemplo de Versionamento de BD
19
-- version 1CREATE TABLE dbo.Auction( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)
-- version 2ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_PK
-- version 3ALTER TABLE dbo.Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)
Revision HistoryV 1 V 2 V 3
Modelo Imperativo• Scripts Imperativos mantém “hard-coded”
conhecimento sobre:– O estado do sistema-alvo
• Presença de objetos, dependências etc.• Ordem correta das operações
– Mudanças cumulativas precisam ser serializadas• v1v2v3v4v5 ao invés de v1v4v5
– Validar o resultado final contra o esperado é difícil
20
Versionamento Imperativo-- version 1 Add table dbo.AuctionIF OBJECT_ID (N'dbo.Auction', N'U') IS NULLBEGINCREATE TABLE dbo.Auction(`
id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)END-- version 2 Add PK Au_PKIF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_PK' AND type = 'PK')BEGIN
ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_PK PRIMARY KEY (id)END-- version 3 Add UC Au_SKIF NOT EXISTS (SELECT * FROM sys.key_constraints WHERE name = 'Au_SK' AND type = ‘UQ')BEGIN
ALTER TABLE Auction WITH CHECK ADD CONSTRAINT Au_SK UNIQUE (name)END
21
Modelo Declarativo• Define o que você quer na forma de um modelo• Preencha o modelo usando uma DSL (domain specific language)
– T-SQL DDL
• Use o modelo como ponto de partida para todas as operações– Implantação/publicação: Começa comparando o estado do alvo com o estado
desejado– Usa o conhecimento obtido sobre a diferença entre estados para gerar um
plano de implantação– Usa o plano para criar uma sequência de comandos (SQL) necessária para fazer
com que o alvo atinja o estado desejado
22
Versionamento Declarativo23
-- version 1CREATE TABLE dbo.Auction( id INT NOT NULL, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)
-- version 2CREATE TABLE dbo.Auction( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL, start DATETIME NULL, len INT NULL)
-- version 3CREATE TABLE dbo.Auction( id INT NOT NULL PRIMARY KEY, name VARCHAR(25) NOT NULL UNIQUE, start DATETIME NULL, len INT NULL)
Revision HistoryV 1 V 2 V 3
Implantação Declarativa de Schema24
24
Model Compare
SourceSchemaModel
Reverse Engineer
TargetDB
TargetSchemaModel
Diff List
PlanOptimizer
Deploy Plan
Script Generator
ScriptExecutor
Artefatosde schemaadicionais
Atualização Incremental
Imperativo vs. Declarativo• Manual vs. Gerado• Ponto-no-tempo vs. Atualizado• Sequencial vs. Diferencial
25
Implantação e Comparação de Schema26
Model Compare
Script
Fragment
Model Builder
SourceSchemaModel
Reverse EngineerDB
SchemaPackage
ModelSerializer
Script
Fragment
Model Builder
Reverse Engineer DB
SchemaPackage
ModelSerializer
TargetSchemaModel
Diff List
PlanOptimizer
Deploy Plan
Script Generator
DiffVisualizer
• Todos os objetos de um schema são representados dentro do modelo
• Permite implantação em diferentes bancos de dados
Baseado em Modelo27
.SQL Source
Processar (parse)
SqlScript
Dom
Interpretar
Modelo de Schema
• SQL Server 2012 Managed Parser– Suporta SQL Server 2005+
• Class TSqlXXXParser – XXX = [80, 90, 100, 110]
• SQLDom.msi (redist x86/x64)• Microsoft.SqlServer.TransactSql.S
criptDom.dll– C:\Program Files (x86)\Microsoft
SQL Server\110\SDK \Assemblies\Microsoft.SqlServer.TransactSql.ScriptDom.dll
– GAC
ScriptDom28
Exemplo de ScriptDomstatic void Main(string[] args){
bool initialQuotedIdentifiers = false;TSqlParser parser = new TSql110Parser(initialQuotedIdentifiers);
StreamReader sr = new StreamReader(@".\test.sql");IList<ParseError> errors;
TSqlFragment fragment = parser.Parse(sr, out errors);
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
Sql110ScriptGenerator scriptGen = new Sql110ScriptGenerator();scriptGen.GenerateScript(fragment, sw);
}
29
Desenvolvimento Conectado• Imperativo & Declarativo• Autoria e Implantação de Schemas
Desenvolvimento Conectado31
• SQL Server Object Explorer (SSOX)– T-SQL Editor/Debugger/IntelliSense (New Query)– Power-Buffer (New Object/View Code)– Table Designer (View Designer)– Data Editor (View Data)– Execute Procedure/Function
• Schema Compare
SQL Server Object Explorer (SSOX)• Ferramenta de Navegação do SQL Server no Visual Studio
– Baseada no SSMS Object Explorer– Escopo no Servidor vs. Server Explorer (escopo no banco de dados)– Ponto de partida: T-SQL Editor, Debugger, Object Execution,
Designers…• Permite conectar diretamente ao SQL Server
– SQL Server {2005, 2008, 2008R2, 2012} and SQL Azure– Constrói um modelo parcial em segundo plano,
transparentemente• Suporte a
– Cascading Drops / Renames– Drift detection– DSRef drag source
SSOX Drift Detection33
• Detecta automaticamente alterações no banco de dados– Mantém SSOX atualizado
• Taxa de atualização do SSOX– Determina a frequencia com que o SSOX verifica por alterações– Padrão: 30 segundos (não pode ser menos)– Para ajustar:
• HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\10.0\SQLDB\DialogPage\Microsoft.VisualStudio.Data.Tools.Package.ToolsOptions.OnlineEditing.OnlineEditingOptionsSettings"PollingDriftCheckSeconds"="30"
Comparação de Schema34
SQL Server Object Explorerdemo
Desenvolvimento Baseado em Projeto
Autoria e Implantação de Schemas, Offline e Isolado
Desenvolvimento Baseado em Projeto
• Projetos de Bancos de Dados• Referências de Bancos de Dados• Publicação de Projetos
Projetos de Bancos de Dados• Modelo único de projeto• Importar a partir de
– Banco de Dados– DACPAC– Script SQL (suporta multi-arquivos)– Importação seletiva via Schema Compare
• “Create New Project” a partir do SSOX– Herda versão do banco de dados
NOTA:• Não há distinção
entre projetos de servidor ou banco de dados
• Projetos de servidor são projetos normais, apontando para o banco de dados master
38
Arquivos de Projeto• *.sqlproj
– Arquivo de projeto MSBuild
• *.sqlproj.user– Opções de usuário para o projeto
• *.dbmdl– <projeto>.dbmdl: schema model cache file
• É o resultado da compilação do projeto (como assembly para .NET)
• Não deve ser colocado no controle de versão
39
Serviços de Linguagem• O uso de projetos habilita os seguintes serviços de linguagem
– Go To Definition– Find All References– Refactoring
• Rename (propaga renomeação de objetos)• Move to Schema (transfere o objeto de um schema para outro) • Wildcard Expansion (remove os asteriscos do tipo “SELECT *”)• Fully Qualify Name (qualifica os nomes de objeto como <banco>.<schema>.<obj>
• Invocado a partir do Editor, Table Designer e SQL Server Object Explorer para todos os objetos do projeto
40
Sandbox Isolado• F5 – “Run”, por padrão, usa a instância do SQL Server
LocalDB associado ao projeto– Data Source=(localdb)\<project name>;Initial Catalog=<project
name>;Integrated Security=True;Pooling=False;Connect Timeout=30
• Para testar em uma outra instância ou versão do SQL Server, altere: – Propriedades do Projeto | Debug | Target Connection String
41
• Simplify embedded usage of SQL Server– Simple installation– Zero-admin database
• Same programming surface as User Instances of SQL Express– The same sqlservr.exe as in service-based SQL Server with the same
language and features– Connection through the same client-side APIs, using a new
connection string option
• SQL Server programming symmetry• Installation similar to .NET Framework model
– One set of installed binaries (per major version), no global configuration, no constantly-running service
• Activation model similar to RANU (Access, SQL Compact, …)– The application connects to a database file, SQL activates
automatically– No service: SQL process starts in the context of current user
• Default connection string– (localdb)\v11.0
• http://msdn.microsoft.com/en-us/library/hh510202(v=SQL.110).aspx
SQL Server 2012 Express LocalDB
42
LocalDB Setup• Packaged in a small single MSI
– SqlLocalDB.msi x32 (27.5 MB)– SqlLocalDB.msi x64 (32.7 MB)
• Single registry key to check if LocalDB Runtime is installed
• Silent installation
• Side-by-side versions
43
[HKLM\SOFTWARE\Microsoft\Microsoft SQL Server Local DB\Installed Versions\11.0]
SQLLocalDB.msi /Quiet /IAcceptLicenseTerms
C:\ Program Files\ Microsoft SQL Server\ 110\ LocalDB\ sqlservr.exe […] 120\ LocalDB\ sqlservr.exe […]
Projeto de Banco de Dadosdemo
Integração com Ciclo de Vida da Aplicação
45
Integração com Ciclo de Vida da Aplicação
• Suporte ao MSBuild• Integração com Controle de Versão• Integração com Servidor de Build
46
Suporte a MSBuild• Tarefas do MSBuild para:– Build– Publish– T-SQL Static Code Analysis
• SSDTBuildUtilities.msi – Redistribuível para componentes específicos do MSBuild– http://sqlproj.com/index.php/2012/03/headless-msbuild-supp
ort-for-ssdt-sqlproj-projects/
47
• SQL Server Data Tools funciona com todos os provedores de controle de versão do Visual Studio– TFS, Git, Subversion…
Suporte a controle de versão48
• Durante o Build Automatizado– Use MSBuild
• Implantação / Publicação– Use MSBuild; ou– Use SqlPackage.exe
Integração com Servidor de Build
49
Integração com TFSdemo
Conclusão51
SQL Server Data Tools• Ferramentas para desenvolvedores criarem, depurarem e
publicarem bancos de dados SQL Server e SQL Azure • Suporta a Plataforma SQL
– Atualizações Gratuitas pela web– Trabalha em conjunto com outras ferramentas SQL (SAMP, SSMS)
• Substitui antigo BIDS– Reporting Services, Analysis Services, Integration Services– Agora SQL Server estará sempre alinhado com versão do VS– Integrado no VS 2010; nativo no VS “11”
• Compatível com ambiente de desenvolvimento– Suporta Visual Studio 2010 & Visual Studio “11”– Atualiza projetos de banco de dados VS 2010 (dbproj)
52
Opções de Instalação• Web Platform Installer• DVD do SQL Server 2012 DVD• Pré-instalado no Visual Studio “11”
GRATUITO!!!
53
Para Saber Mais• SQL Server Data Tools Online Installation
– msdn.microsoft.com/data/tools Baixe agora!
• Blog do Time de Produto– blogs.msdn.com/b/ssdt/
• Fórum MSDN– http://social.msdn.microsoft.com/Forums/en-US/ssdt/threads
• Artigos– Mudanças na ferramenta de BD no VS “11” tinyurl.com/BlogDbPro – MSDN Magazine Set/2011 The "Juneau" Database Project
54