O Futuro do Data Dude (VS DBPro)

Preview:

DESCRIPTION

Conheça a evolução do Visual Studio DbPro: SQL Server Data Tools

Citation preview

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

www.lambda3.com.br

Recommended