MSBuildSsis2012 Now Available (…or Rather SSIS 2012 Deployment Fail Revisited…Again)

Edit: MSSISBuild has been updated and moved to GitHub. Read about it here.  The rest of this post is still relevant, it’s just where you download the code form that has changed. this has proven to be a popular post, and the software has been downloaded a few times. I will post an update for SQL Server 2016 soon, though I think it is just references in the solution that needs updating.

Today I am pleased to announce the release of MSBuildSsis2012 on Codeplex. But before i get into what it does first, a bit of background:

Back in May, and subsequently a few more times since, I’ve posted about an error I get occasionally in one of our custom tasks that run in our builds. This custom task is a special case: As the SSIS 2012 project extension is dtproj, it cannot be compile using MSBuild. The typical solution would be to use DevEnv In MSBuild. And to automate deployment the solution (that would work for most people) is to use the SSIS Deployment Wizard in silent mode. However, we don’t use the SSIS Deployment Wizard in our automated builds as it does not work in Silent Mode when you have assembly references in the SSIS packages: it destroys those references and the dtsx packages fail whenever they run.

Continue reading “MSBuildSsis2012 Now Available (…or Rather SSIS 2012 Deployment Fail Revisited…Again)”

Managing Build Agents via Visual Studio

Things have been quiet on the blogging front, the reason being that house buying/selling has become a major distraction. Plus any time I do get I’ve been looking at Clustered Columnstore Indexes. The more I read about them the more I’m impressed by what Microsoft and the bods on the SQL DB Engine team have achieved here. If you want to read more about clustered columnstore indexes I suggest you check out my previuous posts as there are plenty of links to pique your interest.

Outside of SQL and CCI, I’ve been handing over the builds to the dev team. Letting something go is hard for me; I’m a control freak, but one of the things that has come out of it has been a fresh pair of eyes on how our builds work, plus questions I haven’t asked myself about builds. Like for example  “how do I manage build agents without having to go on the machine itself?” Myself, I’ve always just gone onto the machine and edited the build agent there. however there is a menu in Visual Studio 2012 which shows you all the build agents, there status and the ability to edit the agents themselves. Just open Visual Studio 2012, go to builds actions, manage build controllers and you’ll see the menu below (I’ve frost glassed out the names intentionally):

2014-03-13 14_36_45 Microsoft Visual Studio

You can edit a build agent by highlighting and selecting “properties”. Then the window to manage the agent appears, which is has the exact same options as through the TFS Build Configuration app on the build servers.

2014-03-13 14_40_48-Manage Build Controllers

Frustratingly you cannot manage the builds like this through the web portal. Maybe you can in 2013, but seems a bit unnecessary to require the Visual Studio IDE for something like this. But at any rate, I never knew about this until someone asked me about it today.

SSIS 2012 Deployment Fail Revisited

( Part 2 focuses on clearing out the SSISDB by creating new stored proc based on the one used by the maintenance job. If your Maintenance Job is taking hours to run, you need to check this out.)

When deploying our Ispacs through my builds, I’ve still been getting the intermittent “timeout” issues I first wrote about back in May, and this has been exacerbated by extra SSIS Projects added to the SSISDB catalog.

Continue reading “SSIS 2012 Deployment Fail Revisited”

Associating changesets and Work Items Since the Last Successful Build

Way back in 2008, a post on the blogs.msdn site showed how to create a custom MSBuild task to associate changesets and work items only since the last successful build. Recently I needed to write this custom task myself, but for builds that were “PartiallySuccessful” as well as “Successful”, and was pleased to find such a complete target available. However as it is written for TFS 2008 it won’t work with TFS 2010 onwards. As the blog appears to be inactive now I’ve made the changes and put the code below. Hopefully anyone who needs it for TFS 2010 onwards can use the pingback to get here for the up to date code. The rest of the solution works fine.

Continue reading “Associating changesets and Work Items Since the Last Successful Build”

Using DevEnv In MSBuild

So new week, new post, and getting back to what I really started this blog. I like sharing knowledge, but part of the reason I blog about new versions of software is so that it motivates me to read up on what’s coming up, but the post today is typical of what I enjoy writing about the most. This post is about how to get projects that are unsupported by MSBuild built in an automated build.

Continue reading “Using DevEnv In MSBuild”

WiX Wednesday 1.3 Update Config Files During Deployment


There are many ways to run a find and replace in a config file to environmentalize it: you can update files in the build before they are compiled into the MSI, and even here there are multiple choices: SlowCheetah being one of them. This only works if you know at runtime the servers you are deploying to, or you only want a direct 1 to 1 connection. So on those occasions that you want to deploy to more than one box, updating at runtime does not work. Fortunately there is a way to update using WiX, and is surprisingly straightforward.

Continue reading “WiX Wednesday 1.3 Update Config Files During Deployment”

SSIS 2012 Deployment Fail

(Update: Part 2 focuses on clearing out the SSISDB by creating new stored proc based on the one used by the maintenance job. If your Maintenance Job is taking hours to run, you need to check this out.)

No WiX Wednesday this week, owing to commitments in real life. Instead, here is something regarding SSIS 2012 Deployment. Enjoy!

As part of our CI and Test Builds we have automated the deployment of two SSIS Projects. One is fairly large and the other one contains only two dtsx packages. Recently we have been getting timeout issues with the deployment of the solutions. Continue reading “SSIS 2012 Deployment Fail”

My Two Cents On TFS Build Server Best Practices

Updated for database deployment measurements.


Update August 2016: If you can, use the VSTS Hosted Build Service. If you can’t, then you’d be surprised to know that the Hosted Build Service uses the D2_V2. Which is 2 core, 7GB of RAM. For 1 build agent. So you know…. something to consider there….

(Update 2014: below I mention that 2GB per agent is a good starting point. This is probably not enough if you’re publishing/scripting database changes using sqlpackage.exe, particularly if one of the databases is a multipartitioned data warehouse and you plan on having multiple builds running simultaneously. I’d say 4GB, if you can afford it, per agent for this scenario).

It’s amazing how important build servers are to a team working in Scrum; the team relies on a fast build server that can build and deploy code quickly. A CI Build gives the devs feedback that the code is good to be deployed to…

View original post 1,214 more words

TFS Build Server Stack

Based on a previous post about TFS Build Server Best Practices,I thought I’d share the stack I install and a few of the steps that I go through to get the build server working. Obviously your experiences will be different to mine, and I don’t recommend that you follow this to the letter unless you have a similar set of solutions to build. I’m also going to assume you have Windows Server installed and your build service up and running, there are plenty of blogs and MSDN articles that show you how to set this up.

Continue reading “TFS Build Server Stack”