55
O Futuro do Data Dude (VS DBPro) ALM Summit Brasil 2012 – 27, 28/04/2012

O Futuro do Data Dude (VS DBPro)

Embed Size (px)

DESCRIPTION

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

Citation preview

Page 1: O Futuro do Data Dude (VS DBPro)

O Futuro do Data Dude (VS DBPro)

ALM Summit Brasil 2012 – 27, 28/04/2012

Page 2: O Futuro do Data Dude (VS DBPro)

@IgorAbadeblog.lambda3.com.br/L3/IgorAbade

Page 3: O Futuro do Data Dude (VS DBPro)

• Introdução• Desenvolvimento Declarativo

de Banco de Dados• Desenvolvimento Conectado• Desenvolvimento baseado

em Projeto• Integração com Ciclo de Vida

da Aplicação

Agenda3

Page 4: O Futuro do Data Dude (VS DBPro)

Introdução4

Page 5: O Futuro do Data Dude (VS DBPro)

• 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

Page 6: O Futuro do Data Dude (VS DBPro)

• 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

Page 7: O Futuro do Data Dude (VS DBPro)

• 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

Page 8: O Futuro do Data Dude (VS DBPro)

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

Page 9: O Futuro do Data Dude (VS DBPro)

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

Page 10: O Futuro do Data Dude (VS DBPro)

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

Page 11: O Futuro do Data Dude (VS DBPro)

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)

Page 12: O Futuro do Data Dude (VS DBPro)

Apresentando SQL Server Data Tools12

DESENVOLVIMENTO CONECTADO

DESENVOLVIMENTO BASEADO EM PROJETO

IMPLANTAÇÃO DE SCHEMA

Page 13: O Futuro do Data Dude (VS DBPro)

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

Page 14: O Futuro do Data Dude (VS DBPro)

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

Page 15: O Futuro do Data Dude (VS DBPro)

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

Page 16: O Futuro do Data Dude (VS DBPro)

DAC

SQL Server Data Tools SQL Server Management Studio

PublicarComparar Sincronizar

ImportarExportarRegistrar

SQL Azure Management Portal

Page 17: O Futuro do Data Dude (VS DBPro)

DESENVOLVIMENTO CONECTADO

DESENVOLVIMENTO BASEADO EM PROJETO

IMPLANTAÇÃO DE SCHEMA

DeclarativoFormatos PadronizadosMulti-Targeting DAC

Page 18: O Futuro do Data Dude (VS DBPro)

Desenvolvimento Declarativo de Banco de Dados

18

Page 19: O Futuro do Data Dude (VS DBPro)

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

Page 20: O Futuro do Data Dude (VS DBPro)

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

Page 21: O Futuro do Data Dude (VS DBPro)

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

Page 22: O Futuro do Data Dude (VS DBPro)

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

Page 23: O Futuro do Data Dude (VS DBPro)

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

Page 24: O Futuro do Data Dude (VS DBPro)

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

Page 25: O Futuro do Data Dude (VS DBPro)

Imperativo vs. Declarativo• Manual vs. Gerado• Ponto-no-tempo vs. Atualizado• Sequencial vs. Diferencial

25

Page 26: O Futuro do Data Dude (VS DBPro)

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

Page 27: O Futuro do Data Dude (VS DBPro)

• 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

Page 28: O Futuro do Data Dude (VS DBPro)

• 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

Page 29: O Futuro do Data Dude (VS DBPro)

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

Page 30: O Futuro do Data Dude (VS DBPro)

Desenvolvimento Conectado• Imperativo & Declarativo• Autoria e Implantação de Schemas

Page 31: O Futuro do Data Dude (VS DBPro)

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

Page 32: O Futuro do Data Dude (VS DBPro)

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

Page 33: O Futuro do Data Dude (VS DBPro)

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"

Page 34: O Futuro do Data Dude (VS DBPro)

Comparação de Schema34

Page 35: O Futuro do Data Dude (VS DBPro)

SQL Server Object Explorerdemo

Page 36: O Futuro do Data Dude (VS DBPro)

Desenvolvimento Baseado em Projeto

Autoria e Implantação de Schemas, Offline e Isolado

Page 37: O Futuro do Data Dude (VS DBPro)

Desenvolvimento Baseado em Projeto

• Projetos de Bancos de Dados• Referências de Bancos de Dados• Publicação de Projetos

Page 38: O Futuro do Data Dude (VS DBPro)

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

Page 39: O Futuro do Data Dude (VS DBPro)

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

Page 40: O Futuro do Data Dude (VS DBPro)

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

Page 41: O Futuro do Data Dude (VS DBPro)

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

Page 42: O Futuro do Data Dude (VS DBPro)

• 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

Page 43: O Futuro do Data Dude (VS DBPro)

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 […]

Page 44: O Futuro do Data Dude (VS DBPro)

Projeto de Banco de Dadosdemo

Page 45: O Futuro do Data Dude (VS DBPro)

Integração com Ciclo de Vida da Aplicação

45

Page 46: O Futuro do Data Dude (VS DBPro)

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

Page 47: O Futuro do Data Dude (VS DBPro)

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

Page 48: O Futuro do Data Dude (VS DBPro)

• 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

Page 49: O Futuro do Data Dude (VS DBPro)

• Durante o Build Automatizado– Use MSBuild

• Implantação / Publicação– Use MSBuild; ou– Use SqlPackage.exe

Integração com Servidor de Build

49

Page 50: O Futuro do Data Dude (VS DBPro)

Integração com TFSdemo

Page 51: O Futuro do Data Dude (VS DBPro)

Conclusão51

Page 52: O Futuro do Data Dude (VS DBPro)

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

Page 53: O Futuro do Data Dude (VS DBPro)

Opções de Instalação• Web Platform Installer• DVD do SQL Server 2012 DVD• Pré-instalado no Visual Studio “11”

GRATUITO!!!

53

Page 54: O Futuro do Data Dude (VS DBPro)

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

Page 55: O Futuro do Data Dude (VS DBPro)

www.lambda3.com.br