270 likes | 442 Views
The SSDT way or the highway. ( sqlproj ). Craig Ottley-Thistlethwaite Data Platform Lead Data Science. Database Technologies. This is what the highway can look like. Agenda. SQL Server Data Tools History DAC Framework Declarative Schema Deployment Inside the dacpac
E N D
The SSDT way or the highway (sqlproj) Craig Ottley-Thistlethwaite Data Platform Lead Data Science
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
SQL Server Data Tools History • Project funded April 2005 (Data Dude) • Project Started July 2005 • VS 2005 Team System for Database Professionals • VS 2008 Team System for Database Professionals • Re-architected to be declarative model based system • VS 2008 Team System for Database Professionals GDR R2 • VS 2010 Team System for Database Professionals • Transitioned to SQL Server 2009 • SQL Server Data Tools Source: http://sqlproj.com/wp-content/uploads/2012/03/SSDT-Workshop-2012-03-29-final.pdf
Evolution .dbschema v1.1 VS 2008 GDR .dbschema v1.2 VS 2010 dbproj .sqlx v1.0 SSDT CTP3 .dacpac v2.5 SSDT CTP4 .dacpac v3.0 redist consumed by ALL SQL Products .dacpac v1.0 SQL 2008 R2 RC .dacpac v1.05 SQL 2008 R2 RTM .dacpac v1.1 SQL 2008 R2 SP1 .dacpac v2.0 SQL 2012 RC0 Source: http://sqlproj.com/wp-content/uploads/2012/03/SSDT-Workshop-2012-03-29-final.pdf
DAC Framework (DacFX) • Core SQL Server redistributable component which provides modelling, reverse engineering and deployment capabilities! • Managed Public API • Command-Line tools (SqlPackage.exe) • DACUnpack.exe • Windows file handler for unpacking DACPACs to disk • DACFx Clients • SqlPackage.exe, SSMS, SSDT, SAMP, I&E, VS Web and DB Publishing DacFx does not support state/operational properties! Source: http://sqlproj.com/wp-content/uploads/2012/03/SSDT-Workshop-2012-03-29-final.pdf
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
DacFx Model API – What is it? • SSDT model’s a database’s schema, the API lets you access that model programmatically. • You can load, query and manipulate the schema to do what ever you like (within reason) • API model is loosely typed, the TSqlModel class contains loosely typed TSqlObject’s that represent all the elements in your schema • Each object will have some properties that describe it’s state and the relationships to other objects in the model • Use strongly typed classes to find the properties/relationships of an object using TsqlModel.GetObjects privatestaticvoidReadTheModel(TSqlModel model){ // This will get all tables. Note the use of Table.TypeClass! vartables = model.GetObjects(DacQueryScopes.Default, Table.TypeClass).ToList(); } • API does not fully support everything an SSDT project supports!
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Agenda • SQL Server Data Tools History • DAC Framework • Declarative Schema Deployment • Inside the dacpac • Pre/Post Deploy Scripts • Check/Default Constraints • Add/Remove/Rename Columns • Column Data Type Conversion • DacFx Public Model • Deploy Contributor
Resources • http://dacsamples.codeplex.com/ • https://github.com/dacpac • http://blogs.msdn.com/b/ssdt/archive/2013/12/23/dacfx-public-model-tutorial.aspx
Twitter: @Craig_Ottley Email: craig.ottley-thistlethwaite@dacpac.com Q&A