* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Download SSDT Deployments
Survey
Document related concepts
Extensible Storage Engine wikipedia , lookup
Entity–attribute–value model wikipedia , lookup
Tandem Computers wikipedia , lookup
Oracle Database wikipedia , lookup
Microsoft Access wikipedia , lookup
Functional Database Model wikipedia , lookup
Concurrency control wikipedia , lookup
Microsoft Jet Database Engine wikipedia , lookup
Relational model wikipedia , lookup
Open Database Connectivity wikipedia , lookup
Database model wikipedia , lookup
Transcript
Continuous Deployments using SSDT How I Learned to Stop Worrying and Love the DACPAC Who am I? Christopher Wolff Twitter: @tickytong Email: [email protected] Blog: http://sqlred.blogspot.com/ Objectives Continuous Of Deployments DACPACs and Publish Profiles SqlPackage.exe Using and you! your tools Automation Questions? Nation Assumptions Basic knowledge of SQL Server Data Tools for Visual Studio (SSDT) Basic knowledge of XML for Publish Profile manipulation Basic knowledge of how a relational database schema works Specifically Microsoft SQL Server in this case Continuous Deployments Synergizing synergies Why Continuous Deployments? To cut down on the amount of code in each release Give development team ownership of there own releases Makes sprints shorter and is easier to troubleshoot issues on release Take Ops out of the way so if issues arise, the development team can troubleshoot the issue first and then use Ops as a last resort Catch issues earlier in the process Testing is done constantly during development instead of at the end so fixes are done right away instead of waiting for the next sprint Steps for Continuous Integration Every developer will have a version of the DB on there own machine In order for them to have ownership, they must test it themselves It’s also good to do pull requests so the fellow developers can check each others work When they are complete with their individual tasks they check the SSDT project into a source control system Github or Team Foundation Server A deployment manager or project manager will typically make an integration branch in the source control This is for teams to commit their finished code to before the release happens Typically this will also deploy to a Stage environment so that QA can do further testing Once a release has been declared, the manager will make a release branch All changes will then be merged to this branch in preparation for the release to Prod On to Continuous Deployment Once all code has been merged deploy the code to a testing environment Often called Livestage or just Test It will contain a recent version of a prod backup to test against live data QA’s commences testing This usually happens a week before release so QA can flesh out any issues Release to Live Of DACPACs and Publish Profiles Tools of the trade DACPACs Data Tier Applications Contains all the schema information in any one database Gives a single entity for deploying changes to a production or test database As apposed to multiple SQL scripts Can also include security credentials if needed Idempotent so they will never rerun code, just the code that is missing A close relative is the BACPAC which contains all the data in the database along with the schema information Publish Profiles A collection of all the property key-value pairs that are used by the DACPAC as settings when deploying to a target database Include properties like: Database name Connection string SQLCMD variables How to handle change data capture (CDC) and replication All of these properties come from SqlPackage.exe SqlPackage.exe and you! The one .exe to rule them all SqlPackage.exe A command line tool provided by SQL Server that automates extraction, exporting, importing, publishing, and scripting of a database It is automatically installed with every version of SQL Server Usually stored in C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin Built in parameters that switch on or off the property of the deployment Examples /p:IgnorePermissions={True | False} - Specifies whether permissions should be ignored during deployment. /p:DoNotAlterChangeDataCaptureObjects={True | False} - If true, Change Data Capture objects are not altered during deployment. /p:DropObjectsNotInSource={True | False} - Specifies whether objects that do not exist in the database snapshot (.dacpac) file will be dropped from the target database when you publish to a database. Using your tools How to do the needful Basic Setup Have a deployment server to dispatch the code from Have the dacpac and published profile checked into a versioning system Typically called a terminal server Such as Github or Team Foundation Server Using SQLPackage.exe, execute a command line script to publish the dacapac and publish profile to the server Example "C:\Program Files (x86)\Microsoft SQL Server\110\DAC\bin\SqlPackage.exe" /a:Publish /TargetConnectionString:"application name=DBDeployment;data source=MyProdDB;initial catalog=MyProdDB;Integrated Security=True" /SourceFile:"C:\Deployment\Input\1.0\MyProdDB\MyProdDB.Database.dacpac" /pr:"C:\Deployment\Input\1.0\MyProdDB\MyProdDB.Database.publish.xml“ When you execute the scripts it will print a log file to the screen of what was actually executed in the dacpac Optionally you can have it output to a log file instead > "C:\Deployment\Output\1.0\MyProdDB\01012015_0700_MyProdDB_1_0.log" DEMO Automation Nation Making your job easier, one script at a time Why Automate? Consistency Less Errors Using the same release process every time will cut down on errors Makes it easier to troubleshoot and quicker to recognize where the errors occur Speed and Ease of Use Single call to execute the release as apposed to running multiple scripts Automation Tools Source Control Continuous Integration Software Scripting software GitHub TeamCity PowerShell TFS Jenkins Ruby Bamboo Bash Octopus Deploy Cmd Line Steps to Automate Check in Release Check for New Release Usually through a release branch in the source control software The CI software can be used to look for new releases in source control or have a release manager initiate the release through the CI software Run the Release The CI software will then run the predesigned script to deploy the release Questions? Comments? Crude remarks? Credits Data-tier Application Overview Publish Profile Files in SQL Server Data Tools (SSDT) http://sqlblog.com/blogs/jamie_thomson/archive/2012/05/09/publish-profilefiles-in-sql-server-data-tools-ssdt.aspx SqlPackage.exe https://msdn.microsoft.com/en-us/library/vstudio/ee362011%28v=vs.100%29.aspx https://msdn.microsoft.com/library/hh550080.aspx Deploying a DACPAC with SqlPackage http://blogs.msmvps.com/deborahk/deploying-a-dacpac-with-sqlpackage