O documento apresenta o SQL Server Data Tools (SSDT), uma ferramenta do Visual Studio para desenvolvimento de bancos de dados. SSDT permite desenvolvimento declarativo e conectado de esquemas, integração com o ciclo de vida da aplicação e publicação de projetos de banco de dados.
3. Agenda
3
• Introdução
• Desenvolvimento Declarativo
de Banco de Dados
• Desenvolvimento Conectado
• Desenvolvimento baseado
em Projeto
• Integração com Ciclo de Vida
da Aplicação
5. O Problema
• 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
6. 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
7. A Solução
• 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
8. 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
9. 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
10. História do Projeto “DataDude”
10
• 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
11. Roadmap •
•
•
Suporte a SQL Azure
Designers Visuais
Mecanismo unificado de implantação
• Suporte a apps missão crítica
• Introdução a projetos Data-tier Application • Suporte completo a objetos SQL
• Projetos Data-tier Application (DAC) e • Melhorias no sistema de projetos
Database (SQL) operam SxS • Melhorias nas funcionalidades de ALM
VS 2005 VS 2008 “GDR” VS 2010 SSDT
• Suporte a SQL 2008 R2
• Controle offline de mudanças • SQL IntelliSense
• SQL 2000/2005 • Suporte a bancos de dados de
• ALM para bancos de dados terceiros SQL Server Data Tools (SSDT)
• Suporte a SQL 2008
• Separação de Build e Deploy
• Remoção do “DesignDB”
13. DESENVOLVIMENTO CONECTADO
13
T-SQL IntelliSense Drift Detection Table Designer
SQL Server
Object Explorer
T-SQL Debugging View Code
Schema Comparison
T-SQL Editor View/Edit Data Error Information
14. DESENVOLVIMENTO BASEADO EM
14
PROJETO
Point-in-time
Go To Definition Source Code Based Source Code Control Snapshots
Visualize Schema
Find All References MSBuild Differences
F5 Debugging &
Testing with LocalDB Headless Command T-SQL Static Code
Refactoring Line Tools Analysis
15. IMPLANTAÇÃO DE SCHEMA
15
Model Based SQL Server 2005 DACPAC Format
SQL Server 2008
SQL Server 2012
Incremental SQL Azure Connected Engine
IMPLANTAÇÃO DE
SCHEMA Retargeting Support SQL Script API & REDIST
16. SQL Azure
Management Portal
Importar
Publicar
Exportar
Comparar
Registrar
Sincronizar
DAC
SQL Server Data Tools SQL Server
Management Studio
19. Exemplo de Versionamento de BD
19
-- version 1 -- version 2
CREATE TABLE dbo.Auction ALTER TABLE dbo.Auction
( WITH CHECK ADD CONSTRAINT Au_PK
id INT NOT NULL,
name VARCHAR(25) NOT NULL, -- version 3
start DATETIME NULL, ALTER TABLE dbo.Auction
len INT NULL WITH CHECK
) ADD CONSTRAINT Au_SK UNIQUE (name)
V1 V2 V3 Revision History
20. Modelo Imperativo
20
• 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
21. Versionamento Imperativo
21
-- version 1 Add table dbo.Auction
IF OBJECT_ID (N'dbo.Auction', N'U') IS NULL
BEGIN
CREATE TABLE dbo.Auction
(`
id INT NOT NULL,
name VARCHAR(25) NOT NULL,
start DATETIME NULL,
len INT NULL
)
END
-- version 2 Add PK Au_PK
IF 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_SK
IF 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
22. Modelo Declarativo
22
• 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
23. Versionamento Declarativo
23
-- version 1
CREATE TABLE dbo.Auction
-- version 2
( CREATE TABLE dbo.Auction
-- version 3
id ( INT NOT NULL, dbo.Auction
CREATE TABLE
name id ( INT NOT NOT NULL,
VARCHAR(25) NULL PRIMARY KEY,
start DATETIME INT NOT NOT NULL,
name id NULL,
VARCHAR(25) NULL PRIMARY KEY,
len start NULL VARCHAR(25) NOT NULL UNIQUE,
INTname
DATETIME NULL,
) len start NULL
INT DATETIME NULL,
) len INT NULL
)
V1 V2 V3 Revision History
24. Implantação Declarativa de Schema
24
24
Source Target
Model Reverse
Schema Schema
Compare Engineer
Model Model
Diff List
Plan
Optimizer
Artefatos
de schema Deploy Plan
adicionais Script
Generator
Script Target
Executor Atualização Incremental DB
26. Implantação e Comparação de Schema
26
Script Script
Model Model
Builder Builder
Fragment Fragment
Source Target
Reverse Reverse
DB Schema Schema DB
Engineer Engineer
Model Model
Model
Schema Model Compare Model Schema
Package Serializer Serializer Package
Diff List
Plan Diff
Optimizer Visualizer
Deploy Plan
Script
Generator
27. Baseado em Modelo
27
• Todos os objetos de um .SQL Source
schema são
Processar (parse)
representados dentro do
modelo SqlScript
Dom
• Permite implantação em
Interpretar
diferentes bancos de
dados Modelo de Schema
31. Desenvolvimento Conectado
31
• 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
32. 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
33. SSOX Drift Detection
33
• 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_USERSoftwareMicrosoftVisualStudio10.0SQLDB
DialogPageMicrosoft.VisualStudio.Data.Tools.Package.ToolsOptions.
OnlineEditing.OnlineEditingOptionsSettings
"PollingDriftCheckSeconds"="30"
37. Desenvolvimento Baseado em Projeto
• Projetos de Bancos de Dados
• Referências de Bancos de Dados
• Publicação de Projetos
38. Projetos de Bancos de Dados
38
• Modelo único de projeto NOTA:
• Importar a partir de • Não há distinção
– Banco de Dados entre projetos de
– DACPAC servidor ou
– Script SQL (suporta multi-arquivos) banco de dados
– Importação seletiva via Schema Compare • Projetos de
• “Create New Project” a partir do SSOX servidor são
– Herda versão do banco de dados projetos
normais, aponta
ndo para o banco
de dados master
39. Arquivos de Projeto
39
• *.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
40. Serviços de Linguagem
40
• 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
41. Sandbox Isolado
41
• 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
42. SQL Server 2012 Express LocalDB
42
• 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
43. LocalDB Setup
43
• 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
C:
[HKLMSOFTWAREMicrosoftMicrosoft SQL Server Local Program Files
DBInstalled Versions11.0] Microsoft SQL Server
• Silent installation 110
LocalDB
sqlservr.exe
SQLLocalDB.msi /Quiet /IAcceptLicenseTerms […]
• Side-by-side versions 120
LocalDB
sqlservr.exe
[…]
46. Integração com Ciclo de Vida da
46
Aplicação
• Suporte ao MSBuild
• Integração com Controle de Versão
• Integração com Servidor de Build
47. Suporte a MSBuild
47
• 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-
support-for-ssdt-sqlproj-projects/
48. Suporte a controle de versão
48
• SQL Server Data Tools
funciona com todos os
provedores de controle
de versão do Visual
Studio
– TFS, Git, Subversion…
49. Integração com Servidor de Build
49
• Durante o Build
Automatizado
– Use MSBuild
• Implantação / Publicação
– Use MSBuild; ou
– Use SqlPackage.exe
52. SQL Server Data Tools
52
• 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)
53. Opções de Instalação
53
• Web Platform Installer
• DVD do SQL Server 2012 DVD
• Pré-instalado no Visual Studio “11”
GRATUITO!!!
54. Para Saber Mais
54
• 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
Developer-focused toolset for building SQL Server & SQL Azure databasesExperiences EnabledDESENVOLVIMENTO CONECTADODESENVOLVIMENTO BASEADO EM PROJETOApplication Lifecycle & ToolsFundamentalsDeclarative, model based database developmentIntegrated tools with modern language services Connected and offline with local testingTarget SQL Server and SQL AzureDetecting and managing database drift
SQL Server Object Explorer (SSOX)Modeled after SSMS object explorerModern T-SQL Coding Experience Buffered Declarative Object EditingModel-based with Error DetectionImperative Script ExecutionT-SQL IntelliSenseCode-behind Table DesignerView/Edit/Script Data (incl. copy/paste)Execute/Debug T-SQL Procedures, Functions
Database definition managed in a Visual Studio projectMulti-target SQL Server {2005, 2008, 2008R2, 2012, Azure}Advanced Language Services for T-SQLGo To Definition/Find All References/RefactoringF5 debugging with LocalDBVisualize schema differences and migrate changesPublish direct to database or via SQL script or DACPACIntegrated database drift detectionPoint-in-time SnapshotDrag & Drop import from SQL Server Object ExplorerApplication Lifecycle & ToolsMSBuild tasks for:BuildPublishT-SQL Static Code AnalysisMSBuild in a redist (SSDTBuildUtilities.msi)Database projects in build server environment (like Team Build) without installing full VS on build serverSSDT Integrates with all standard VS SCCS providersDACFX v3Schema ComparePublish
Publishing your Database ChangesTarget version aware:SQL Server 2005SQL Server 2008 & SQL Server 2008 R2SQL Server 2012SQL AzurePublish Direct, via SQL script, or DACPAC snapshots
DAC Framework v3.0 (DACFX)DAC FrameworkDACFX is the core SQL redist providing modeling, reverse engineering and deployment pipeline capabilitiesv3.0 supports the full domain of SQL Server 2005, 2008/R2, 2012, and SQL AzureManaged Public APIExposes verbs for DACPAC and BACPAC operationsCommand-line tool (SqlPackage.exe)Exposes DACPAC verbs, project publishDACUnpack.exeWindows file handler for unpacking DACPAC to diskDACFX ClientsSSMS, SSDT, SAMP, I&E, VS Web and DB Publishing
SQL Server Data Tools – SummaryDeveloper-focused toolset to author, debug and publish SQL Server & SQL Azure databasesSupports SQL PlatformFree, web updates for SQL Server and SQL Azure releasesWorks in concert with other SQL Server tooling (SAMP, SSMS)Compatible with your development environmentSupports Visual Studio 2010 & Visual Studio 11Migrates VS2010 database projects (*.dbproj)
Schema Compare is an incredibly useful tool, providing a visual head over SSDT’s model differencing and update engine. It can be used to compare any combination of database, project or dacpac, and allows selective update of the target schema (via an update script in the case of a dacpac). We’ve made some significant changes to the tool for the RTW release, improving its look and feel, particularly to make it easier to digest and process comparison results. This post describes many of Schema Compare's key features – some of which surfaced in CTP4 – with a screen shot at the bottom that highlights several of them.First, the visual comparison ‘language’ of the results grid:Differences-Only by Default: By default the grid contains differences only (with empty folders removed) – if there is only one difference you will see just one item. And the grid always contains all the actions resulting from the comparison – while you can hide an action temporarily within a contracted group it is always present in the grid and will apply to the update or script unless you exclude it by unchecking the action.Equal Objects filter:A toolbar button adds equal objects to the grid. Enabling this is useful if you want to review, for example, unchanged columns alongside the changed columns in a table. Unsupported Actions filter: You can also choose to see unsupported actions – these result from differences for which there is no supported action that can be taken on the target. These typically result from differences in server objects or built-in types between schema versions.Action Icons: Actions (Add, Change, and Delete) are visualized using icons, making it easier to absorb a set of changes at a glance. The checkbox alongside an icon indicates if the action will be included in the update or generated script. If there is no icon the item will not be included in an update or script.Grayed Items: Items that do not contribute to the update are grayed – excluded actions, unsupported actions and equal objects are all grayed. Folders are grayed when all their contents are grayed making it easy to see when a group of differences have all been excluded without you needing to drill in.Grouping: By default, items are grouped by action so you can quickly assess what changes will be made on update. You can also group the results by object type or by schema. You can expand or collapse a group to temporarily hide detail, and you can exclude all or include all objects in a group.Refactor Highlighting: Schema Compare processes the refactor log if present when targeting a database. Refactoring is indicated in the grid as a change action with the source name bolded to highlight the new schema and/or name. Refactoring will cause objects to be renamed in the database. Refactoring sometimes also shows up as a second order effect on other objects that SQL Server will modify when applying the rename. These will not be marked as actions in the grid as you cannot exclude them, but you will see the changed script if you select the affected object. Probably the biggest set of changes affects the script difference pane. While the grid provides a great overview, to see all changes to an object in the grid you have to fully expand it, which, can quickly clutter the view if you're reviewing many objects. To address this we’ve focused more attention on the script differencing experience – after all, you are writing and editing object scripts to begin with. Changes include:Expanded Object Scripts: The script difference pane now shows the combined scripts for an object and its hierarchical children. This gives a complete picture of all the changes affecting an object in one easy-to-scan place. To complement this, the Next and Previous buttons step between top-level objects only. Together, these two changes can dramatically simplify scanning through the results of a comparison. Enhanced Script Differencing: The script difference algorithm now treats child objects as discrete entities, more effectively highlighting those that have been added, deleted or changed. The color scheme is now more subtle and better reinforces the direction of changes. And remember that you can expand the script pane or swap it to the top – so you can easily optimize the layout to better focus on reviewing scripts.The screen shot below highlights many of these improvements.