---
title: Deploying Database with Release Management for Visual Studio
description: Database deployments are notoriously tricky. Luckily, with Release Management for Visual Studio you can ease the pain!
image: https://blogs.incyclesoftware.com/hs-fs/file-3322897167-png/blog-files/1-dm-ssdtrm.png
---

# Deploying Database with Release Management for Visual Studio

Posted by Daniel Mann - March 05, 2014

- [**](https://www.facebook.com/sharer/sharer.php?u=https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/)
- [**](https://www.linkedin.com/shareArticle?mini=true&url=https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/&title=&summary=&source=)
- [**](https://twitter.com/home?status=)
- [**](mailto:?&subject=https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/&body=https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/)

**

![header-picture](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/woman-notebook-working-girl.png "header-picture")

Database deployments are notoriously tricky. Luckily, we have some great tools available to ease the pain! I will show how to use Release Management to manage database deployments but first let's talk about using SSDT to manage database.

### Step 1: Use SSDT to manage databases

Traditionally, database changes are handled via SQL scripts. When a developer needs to change the database schema, they write a little SQL script and (if we're lucky!) put it into source control. Then, when it's time to deploy the new code, someone (sometimes a developer, sometimes a DBA) runs the script. This quickly gets hard to manage, because we end up having to ask a lot of questions:

- What database scripts should be run for this deployment?
- What order should the database scripts be run in?
- Who should be running them?
- When should they be running them?
- Are the database scripts able to be safely run multiple times?

Luckily, we have a great tool for turning our databases into regular old Visual Studio projects that can be source controlled and deployed with ease: [SQL Server Data Tools](http://msdn.microsoft.com/en-us/data/tools.aspx). With SSDT, we can import an existing database, turn it into a project in Visual Studio, and then let SSDT manage our database.

When you build a SSDT project, SSDT will generate a file containing your database schema -- a **DACPAC** -- and allow you to publish it. Publishing a DACPAC results in your DACPAC's schema being compared to your database's schema, and automatically generates a SQL script containing the necessary SQL statements to make your database match up with your DACPAC schema. It's very configurable, so you can make sure it only automatically does the actions that you want it to!

Okay, so we've solved the problem of how to manage our database schema... we'll use SSDT! But now the question of how to publish our database schema is looming. Well, if you've read my previous [blog posts](http://incycle-corpweb.azurewebsites.net/author/daniel-mann/), you probably already know what I'm going to say: Use Release Management for Visual Studio!

### Step 2: Use Release Management for Visual Studio for database deployments

Let's start by looking at my application's database. You can see that it's just another project in my web application's solution, so it will build a DACPAC for me whenever I build all the other pieces of my application.

[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897167-png/blog-files/1-dm-ssdtrm.png?width=929&height=696&name=1-dm-ssdtrm.png)](http://incycle-corpweb.azurewebsites.net/2014/03/deploying-databases-release-management/1-dm-ssdtrm/)

Now I want to deploy this DACPAC whenever I release my website. Let's look at how we can use Release Management to do that.

Release Management has a built-in tool to handle doing DACPAC deployments, so all we really need to do is make a new component that leverages the existing tool.

For the "**Source**" setting, we can choose "**Builds with Application**", and we can set our package path to the root of the build drop folder. Since the Release Template we're going to be deploying is already tied to my automated build that generates the DACPAC and my website, all of the details of where the DACPAC is going to come from is already handled for us.

Here's what my component looks like:  
[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897177-png/blog-files/2-dm-ssdtrm.png?width=950&height=623&name=2-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897177-png/blog-files/2-dm-ssdtrm.png)

Next, we click over to the "**Deployment**" tab, and choose the "**DACPAC Database Deployer**" tool. The tool takes 3 parameters: *FileName*, *ServerName*, and *DatabaseName*. We'll fill those in when we're using our new component in our Release Template.

[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897187-png/blog-files/3-dm-ssdtrm.png?width=952&height=623&name=3-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897187-png/blog-files/3-dm-ssdtrm.png)

That's all for the component! Now we can add it to our existing release template, and specify the DACPAC file name to deploy, the SQL server and instance to deploy to, and the name that the database should have. The filename is going to be, by default, the name of the SSDT project. Since my SSDT project is named *FabrikamFiber.Database*, that's the name of my DACPAC.

[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897197-png/blog-files/4-dm-ssdtrm.png?width=952&height=623&name=4-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897197-png/blog-files/4-dm-ssdtrm.png)

Now, when I make a change to my database schema in SSDT and check it in, it'll automatically deploy the schema changes along with my website! Let's add some new columns to the Customers table:  
[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897207-png/blog-files/5-dm-ssdtrm.png?width=956&height=757&name=5-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897207-png/blog-files/5-dm-ssdtrm.png)

I check my change in, and my Continuous Integration build kicks off, builds my DACPAC and my website, and triggers a release automatically:

[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897217-png/blog-files/6-dm-ssdtrm.png?width=953&height=625&name=6-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897217-png/blog-files/6-dm-ssdtrm.png)

And in this release, we can see my database get published:

[![](https://blogs.incyclesoftware.com/hs-fs/file-3322897227-png/blog-files/7-dm-ssdtrm.png?width=1327&height=604&name=7-dm-ssdtrm.png)](https://blogs.incyclesoftware.com/hs-fs/file-3322897227-png/blog-files/7-dm-ssdtrm.png)

And that's all there is to it! If you are interested in learning more about rollbacks scenarios with Release Management, I also wrote a blog post about it. Next blog posts will focus on branch and merging strategies with Release Management for Visual Studio.

 Topics: [Blog](https://blogs.incyclesoftware.com/topic/blog)

---

### Recent Posts

By InCycle - 05 March, 2014

#### InCycle Wins Prestigious Microsoft Global Partner of the Year Award

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/incycle-wins-prestigious-microsoft-global-partner-of-the-year-award)

By InCycle - 05 March, 2014

#### Top 5 Questions On Elevate for App Modernization

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/top-five-questions-on-elevate-for-app-modernization)

By InCycle - 05 March, 2014

#### GitHub Universe 2025 Top Announcements

[![read more](https://cdn2.hubspot.net/hubfs/685080/IMG-TurboSodium/Sodium%20v2/blog/arrow-recent-blog-post.png "read more")](https://blogs.incyclesoftware.com/github-universe-2025-top-announcements)

---

### Subscribe to Blog

### ![2025 Microsoft Partner of the Year Winner: InCycle Software](https://blogs.incyclesoftware.com/hs-fs/hubfs/InCycle%202025%20Microsoft%20PoY%20Badge.png?width=377&height=223&name=InCycle%202025%20Microsoft%20PoY%20Badge.png)

### About this blog

Since 2002, InCycle has been providing challenging thought leadership to help customers successfully combine modern application designs, IT platforms and DevOps practices to achieve new levels of success. As a leader in app modernization, these blogs are written by our expert consultants and provide useful information to help on your journey to the cloud and better software. Happy reading!

### Platform Engineering Webinar on Demand

PE deep dive and demo!

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/aae0556f-2d26-4ce4-9b32-e7bebd443c9a)

### Recent Posts

### Migrating to GitHub?

Start with a GitHub Migration Strategy and Roadmap (at no cost!)

[![Learn More!](https://no-cache.hubspot.com/cta/default/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f.png)](https://cta-redirect.hubspot.com/cta/redirect/707613/312dc03f-1f78-4907-aaaf-3c0aa3cccd8f)

### Posts by Topic

- [Blog (194)](https://blogs.incyclesoftware.com/topic/blog)
- [Video (32)](https://blogs.incyclesoftware.com/topic/video)
- [Azure (25)](https://blogs.incyclesoftware.com/topic/azure)
- [DevOps (20)](https://blogs.incyclesoftware.com/topic/devops)
- [GitHub (13)](https://blogs.incyclesoftware.com/topic/github)
- [InRelease (12)](https://blogs.incyclesoftware.com/topic/inrelease)
- [Containers (11)](https://blogs.incyclesoftware.com/topic/containers)
- [release management (11)](https://blogs.incyclesoftware.com/topic/release-management)
- [AKS (10)](https://blogs.incyclesoftware.com/topic/aks)
- [CI/CD (10)](https://blogs.incyclesoftware.com/topic/ci-cd)
- [Kubernetes (10)](https://blogs.incyclesoftware.com/topic/kubernetes)
- [Azure DevOps (9)](https://blogs.incyclesoftware.com/topic/azure-devops)
- [Migration (9)](https://blogs.incyclesoftware.com/topic/migration)
- [Platform Engineering (PE) (9)](https://blogs.incyclesoftware.com/topic/platform-engineering-pe)
- [GenAI (8)](https://blogs.incyclesoftware.com/topic/genai)
- [Microsoft Azure (8)](https://blogs.incyclesoftware.com/topic/microsoft-azure)
- [Visual Studio (8)](https://blogs.incyclesoftware.com/topic/visual-studio)
- [tfs (8)](https://blogs.incyclesoftware.com/topic/tfs)
- [Awards (7)](https://blogs.incyclesoftware.com/topic/awards)
- [Big Data (6)](https://blogs.incyclesoftware.com/topic/big-data)
- [Innovation (6)](https://blogs.incyclesoftware.com/topic/innovation)
- [Microsoft (6)](https://blogs.incyclesoftware.com/topic/microsoft)
- [agile (6)](https://blogs.incyclesoftware.com/topic/agile)
- [vsts (6)](https://blogs.incyclesoftware.com/topic/vsts)
- [Data (5)](https://blogs.incyclesoftware.com/topic/data)
- [Modernization (5)](https://blogs.incyclesoftware.com/topic/modernization)
- [App Modernization (4)](https://blogs.incyclesoftware.com/topic/app-modernization)
- [Automated Testing (4)](https://blogs.incyclesoftware.com/topic/automated-testing)
- [Data & AI (4)](https://blogs.incyclesoftware.com/topic/data-ai)
- [Event (4)](https://blogs.incyclesoftware.com/topic/event)
- [MLOps (4)](https://blogs.incyclesoftware.com/topic/mlops)
- [Modern Apps (4)](https://blogs.incyclesoftware.com/topic/modern-apps)
- [Visual Studio 2017 (4)](https://blogs.incyclesoftware.com/topic/visual-studio-2017)
- [DevTest (3)](https://blogs.incyclesoftware.com/topic/devtest)
- [Events (3)](https://blogs.incyclesoftware.com/topic/events)
- [Governance (3)](https://blogs.incyclesoftware.com/topic/governance)
- [VSO (3)](https://blogs.incyclesoftware.com/topic/vso)
- [Data Analytics (2)](https://blogs.incyclesoftware.com/topic/data-analytics)
- [Docker (2)](https://blogs.incyclesoftware.com/topic/docker)
- [Integration (2)](https://blogs.incyclesoftware.com/topic/integration)
- [Microsoft Connect (2)](https://blogs.incyclesoftware.com/topic/microsoft-connect)
- [Mobile Development (2)](https://blogs.incyclesoftware.com/topic/mobile-development)
- [RM (2)](https://blogs.incyclesoftware.com/topic/rm)
- [SQL (2)](https://blogs.incyclesoftware.com/topic/sql)
- [SaaS (2)](https://blogs.incyclesoftware.com/topic/saas)
- [TFS 15 Preview (2)](https://blogs.incyclesoftware.com/topic/tfs-15-preview)
- [TFS 2017 (2)](https://blogs.incyclesoftware.com/topic/tfs-2017)
- [Uncategorized (2)](https://blogs.incyclesoftware.com/topic/uncategorized)
- [Visual Studio 2015 (2)](https://blogs.incyclesoftware.com/topic/visual-studio-2015)
- [Xamarin (2)](https://blogs.incyclesoftware.com/topic/xamarin)
- [ADX (1)](https://blogs.incyclesoftware.com/topic/adx)
- [AI (1)](https://blogs.incyclesoftware.com/topic/ai)
- [Android (1)](https://blogs.incyclesoftware.com/topic/android)
- [Application Monitoring (1)](https://blogs.incyclesoftware.com/topic/application-monitoring)
- [Apps (1)](https://blogs.incyclesoftware.com/topic/apps)
- [BI (1)](https://blogs.incyclesoftware.com/topic/bi)
- [Brian Harry (1)](https://blogs.incyclesoftware.com/topic/brian-harry)
- [Cloud Azure (1)](https://blogs.incyclesoftware.com/topic/cloud-azure)
- [Cloud Services (1)](https://blogs.incyclesoftware.com/topic/cloud-services)
- [Connect (1)](https://blogs.incyclesoftware.com/topic/connect)
- [Connect 2016 (1)](https://blogs.incyclesoftware.com/topic/connect-2016)
- [Consultants (1)](https://blogs.incyclesoftware.com/topic/consultants)
- [Cosmos DB (1)](https://blogs.incyclesoftware.com/topic/cosmos-db)
- [Data Center (1)](https://blogs.incyclesoftware.com/topic/data-center)
- [Development (1)](https://blogs.incyclesoftware.com/topic/development)
- [EA (1)](https://blogs.incyclesoftware.com/topic/ea)
- [Git (1)](https://blogs.incyclesoftware.com/topic/git)
- [Hybrid (1)](https://blogs.incyclesoftware.com/topic/hybrid)
- [IntelliTes (1)](https://blogs.incyclesoftware.com/topic/intellites)
- [IntelliTest (1)](https://blogs.incyclesoftware.com/topic/intellitest)
- [Lab Management (1)](https://blogs.incyclesoftware.com/topic/lab-management)
- [Live Unit Testing (1)](https://blogs.incyclesoftware.com/topic/live-unit-testing)
- [Load Testing (1)](https://blogs.incyclesoftware.com/topic/load-testing)
- [MSDN (1)](https://blogs.incyclesoftware.com/topic/msdn)
- [MSTest (1)](https://blogs.incyclesoftware.com/topic/mstest)
- [MTM (1)](https://blogs.incyclesoftware.com/topic/mtm)
- [Machine Learning (1)](https://blogs.incyclesoftware.com/topic/machine-learning)
- [Media & Entertainment (1)](https://blogs.incyclesoftware.com/topic/media-entertainment)
- [Microsoft Visual Studio (1)](https://blogs.incyclesoftware.com/topic/microsoft-visual-studio)
- [Microsoft nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/microsoft-nationally-managed-partner)
- [NUnit (1)](https://blogs.incyclesoftware.com/topic/nunit)
- [OpsHub (1)](https://blogs.incyclesoftware.com/topic/opshub)
- [PaaS (1)](https://blogs.incyclesoftware.com/topic/paas)
- [Pipelines (1)](https://blogs.incyclesoftware.com/topic/pipelines)
- [PowerShell (1)](https://blogs.incyclesoftware.com/topic/powershell)
- [Principles and Practices of DevOps (1)](https://blogs.incyclesoftware.com/topic/principles-and-practices-of-devops)
- [Programs (1)](https://blogs.incyclesoftware.com/topic/programs)
- [RC (1)](https://blogs.incyclesoftware.com/topic/rc)
- [Release Candidate (1)](https://blogs.incyclesoftware.com/topic/release-candidate)
- [SQL Databases (1)](https://blogs.incyclesoftware.com/topic/sql-databases)
- [SQL server (1)](https://blogs.incyclesoftware.com/topic/sql-server)
- [SSDT (1)](https://blogs.incyclesoftware.com/topic/ssdt)
- [Software (1)](https://blogs.incyclesoftware.com/topic/software)
- [Subscription & Billing Management (1)](https://blogs.incyclesoftware.com/topic/subscription-billing-management)
- [TFS 15 (1)](https://blogs.incyclesoftware.com/topic/tfs-15)
- [TFS 2015 update (1)](https://blogs.incyclesoftware.com/topic/tfs-2015-update)
- [TFS 2016 (1)](https://blogs.incyclesoftware.com/topic/tfs-2016)
- [TFS ALM (1)](https://blogs.incyclesoftware.com/topic/tfs-alm)
- [TestMethods (1)](https://blogs.incyclesoftware.com/topic/testmethods)
- [UI (1)](https://blogs.incyclesoftware.com/topic/ui)
- [UX (1)](https://blogs.incyclesoftware.com/topic/ux)
- [VS2017 (1)](https://blogs.incyclesoftware.com/topic/vs2017)
- [Validation (1)](https://blogs.incyclesoftware.com/topic/validation)
- [Virtual Machines (1)](https://blogs.incyclesoftware.com/topic/virtual-machines)
- [WPC 2016 (1)](https://blogs.incyclesoftware.com/topic/wpc-2016)
- [Web (1)](https://blogs.incyclesoftware.com/topic/web)
- [Windows (1)](https://blogs.incyclesoftware.com/topic/windows)
- [World Partner Conference (1)](https://blogs.incyclesoftware.com/topic/world-partner-conference)
- [XUnit (1)](https://blogs.incyclesoftware.com/topic/xunit)
- [alm (1)](https://blogs.incyclesoftware.com/topic/alm)
- [automation (1)](https://blogs.incyclesoftware.com/topic/automation)
- [build (1)](https://blogs.incyclesoftware.com/topic/build)
- [code (1)](https://blogs.incyclesoftware.com/topic/code)
- [nationally managed partner (1)](https://blogs.incyclesoftware.com/topic/nationally-managed-partner)
- [sql server 2008 (1)](https://blogs.incyclesoftware.com/topic/sql-server-2008)
- [unit testing (1)](https://blogs.incyclesoftware.com/topic/unit-testing)
- [vm (1)](https://blogs.incyclesoftware.com/topic/vm)

[see all](https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/#)

### Blog Archive

- [November 2012 (17)](https://blogs.incyclesoftware.com/archive/2012/11)
- [September 2025 (14)](https://blogs.incyclesoftware.com/archive/2025/09)
- [October 2014 (12)](https://blogs.incyclesoftware.com/archive/2014/10)
- [July 2012 (10)](https://blogs.incyclesoftware.com/archive/2012/07)
- [October 2012 (9)](https://blogs.incyclesoftware.com/archive/2012/10)

- [**](https://twitter.com/incyclesoftware?lang=en)
- [**](https://ca.linkedin.com/company/incycle-software)
- [**](https://www.facebook.com/InCycleSoftware/)

### About us

At InCycle, we believe there is always a better way and today, that includes the cloud.

[![InCycle Microsoft Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Incycle%202017%20website%20resources/logo-InCycle-New-white.png?width=200&name=logo-InCycle-New-white.png "InCycle Microsoft Partner")](https://www.incyclesoftware.com/)

### Learn more

- [Why Incycle?](https://www.incyclesoftware.com/why-incycle)
- [Success Stories](https://www.incyclesoftware.com/customer-success-stories)
- [Events](https://www.incyclesoftware.com/events)
- [Careers](https://www.incyclesoftware.com/careers)
- [About](https://www.incyclesoftware.com/about-incycle-software)

 

### 1-800-565-0510 [info@incyclesoftware.com](mailto:info@incyclesoftware.com) 

### ![Microsoft GitHub Verified Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/GitHub%20Verified%20Partner%20-%20white-SQUARE.png?width=256&height=57&name=GitHub%20Verified%20Partner%20-%20white-SQUARE.png) ![Data & AI Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Data%20%26%20AI%20Solutions%20Partner.png?width=125&height=144&name=Data%20%26%20AI%20Solutions%20Partner.png) ![Digital & App Innovation Solutions Partner](https://blogs.incyclesoftware.com/hs-fs/hubfs/Digital%20%26%20App%20Innovation%20Solutions%20Partner.png?width=125&height=144&name=Digital%20%26%20App%20Innovation%20Solutions%20Partner.png)

 

© 2025 InCycle Software

[Privacy policy](https://www.incyclesoftware.com/privacy)

**

![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif) ![](https://px.ads.linkedin.com/collect/?pid=302756&fmt=gif)

```json
{
  "@context" : "https://schema.org",
  "@type" : "BlogPosting",
  "author" : {
    "@type" : "Person",
    "name" : "Daniel Mann",
    "url" : "https://blogs.incyclesoftware.com/author/daniel-mann"
  },
  "datePublished" : "2014-03-05T17:37:22.000Z",
  "headline" : "Deploying Database with Release Management for Visual Studio",
  "image" : [ "https://blogs.incyclesoftware.com/hs-fs/file-3322897167-png/blog-files/1-dm-ssdtrm.png" ],
  "mainEntityOfPage" : {
    "@id" : "https://blogs.incyclesoftware.com/2014/03/deploying-databases-release-management/",
    "@type" : "WebPage"
  },
  "publisher" : {
    "@type" : "Organization",
    "logo" : {
      "@type" : "ImageObject",
      "url" : "https://blogs.incyclesoftware.com/hubfs/logo-InCycle-New-Blue---transparent.png"
    },
    "name" : "InCycle Software Inc."
  }
}
```