RoundhousE is a Database Migration Utility for .NET using sql files and versioning based on source control
Clone or download
cmiles74 and erikbra Moved to newest MySQL driver (#350)
* Moved to newest MySQL driver

* Updated more references to the MySQL driver
Latest commit 2c13cae Dec 14, 2018
Type Name Latest commit message Commit time
Failed to load latest commit information.
Settings Prepare for 0.8.8 Release Oct 16, 2017
build.custom (GH-234) Fault tolerance for transient exceptions Nov 18, 2015
build Added new, simpler (ihmo) build script Oct 20, 2017
db MySql restore support, added sakila sample database to have a full ba… Nov 2, 2016
deployment/templates Add deployment batch templates using custom create script Sep 17, 2011
docs A few adjustments after review. Oct 24, 2017
gems Add and don't ignore /gems/bin/rh. Apr 1, 2013
lib Merge pull request #224 from drusellers/pg-enhancements Oct 11, 2017
nuget Added roundhouse.lib and roundhouse.msbuild nuget packages to output … Oct 27, 2017
product Moved to newest MySQL driver (#350) Dec 14, 2018
sample Switch from SVN to Git for the official repository. Mar 23, 2013
.editorconfig (GH-190) Coding Standards Jul 14, 2016
.gitignore Added .vs (Visual Studio) and .idea (JetBrains Rider) to .gitignore Oct 20, 2017
CONTRIBUTING.markdown (GH-190) Coding Standards Jul 14, 2016
GitVersion.yml Added GitVersion-config Nov 12, 2017
NDepend.xml converting line endings Sep 7, 2012
README.markdown Added build of RoundhousE as a dotnet core 2.1 global tool Dec 9, 2018
RoundhousE.snk signing roundhouse assemblies - #14 Aug 17, 2011
appveyor.yml Fixed version diff btw deps and nuspec deps (#347) Dec 9, 2018
build.bat Update build to match SVN repository. Mar 25, 2013
build.ps1 Issue 352 - Can't find Antlr (#353) Dec 11, 2018 Add bash script for running builds. Mar 23, 2013
ilmerge.bat converting line endings Sep 7, 2012
open.bat Update build to match SVN repository. Mar 25, 2013
roundhouse.sln Fixed Issue #306 - added roundhouse.lib.merged Dec 15, 2017
roundhouse.sln.DotSettings (GH-190) Coding Standards Jul 14, 2016
test.bat Update build to match SVN repository. Mar 25, 2013
zip-only.bat converting line endings Sep 7, 2012
zip.bat Update build to match SVN repository. Mar 25, 2013


Project RoundhousE - Database Change Management done right

RoundhousE - Professional Database Management


Apache 2.0 - see docs\legal (just LEGAL in the zip folder)



1.0.0 Release Candidates are Out! Help us test!

We are releasing a cross-platform, .NET core version of RoundhousE. We are calling this release 1.0.0 and need your help to test it. Switch the branch over to the 1.0.0 branch and the instructions for the new version will be waiting.

To get this new build, for the Nuget packages, please add the following to you nuget sources:

This can be done via your favourite IDE, e.g. Visual Studio, or via the command-line:

nuget sources add -Name Roundhouse-Myget -Source

Be sure to enable Preview versions when browsing for the packages, if not, they will not show up in your feed.

For the command line, before the release is final, and we push to Chocolatey (and hopefully some other package managers, like apt-get in the future), the easiest way to get the command-line version, would be off the build server. If you would like to help us test the .net core version, please download the .tar.gz file, and use on an OS of choice (Windows, macOS, Linux). Dotnet core is required.


Pardon our mess while we modernize the dependencies and build system. There's clean up underway. To work with the latest code, pull master and run build.ps1 in your directory (or open project in Visual Studio 2017)

To work with the command line, you will need the following in your path:

  • MS Build
  • GitVersion (easiest to run choco install gitversion.portable. You are running choclately aren't you?)
  • NuGet Command Line (easiest to run choco install nuget.commandline. You are running choclately aren't you?)


NOTE: If you are looking at the source - please run build.bat before opening the solution. It creates the SolutionVersion.cs file that is necessary for a successful build.



RoundhousE is an automated database deployment (change management) system that allows you to use your current idioms and gain much more. Currently works with Oracle, SQL Server (2000/2005/2008/Express), Access, MySQL, SQLite and PostgreSQL.There are future plans for other databases.

It seeks to solve both maintenance concerns and ease of deployment. We follow some of the same idioms as other database management systems (SQL scripts), but we are different in that we think about future maintenance concerns. We want to always apply certain scripts (anything stateless like functions, views, stored procedures, and permissions), so we don't have to throw everything into our change scripts. This seeks to solves future source control concerns. How sweet is it when you can version the database according to your current source control version?

Getting started with RoundhousE


You can download RoundhousE from

You can also obtain a copy from the build server at

Gems (Not updated for 0.9.0, sorry)

If you have Ruby 1.8.6+ (and Gems 1.3.7+) installed, you can get the current release of RoundhousE to your machine quickly!

  1. Type gem install roundhouse
  2. Then from anywhere you can type rh [options]


With NuGet you can get the current release of RoundhousE to your application quickly!

  1. In Visual Studio Package Manager Console type install-package roundhouse
  2. There is also roundhouse.lib, roundhouse.msbuild, and roundhouse.refreshdatabase


Chocolatey is like apt-get, but for Windows! This is an alternative method to get the current release of RoundhousE to your machine quickly!

  1. Type cinst roundhouse
  2. Then from anywhere you can type rh [options]

Dotnet core (Linux, macOS, etc)

We have a new build of RoundhousE, built on the new(er) mean and lean dotnet core. Dotnet core runs on all major OS-es, including Windows, Linux and macOS. RoundhousE is distributed as a .net core 2.1 global tool, and can be installed like this:

dotnet tool install -g dotnet-roundhouse

You can read more about what happens in the background e.g. here:, but in short, it installs the binaries to your ~/.dotnet/tools folder. You can run RoundhousE by typing

dotnet rh

You will need dotnet core installed on your box for this to work. You can get it here:

So, to sum up:

  1. Install dotnet core 2.1 from either, or use a package manager of choice (e.g. apt-get on Debian/Ubuntu), if you haven't already
  2. dotnet tool install -g dotnet-roundhouse
  3. dotnet rh


This is the best way to get to the bleeding edge of what we are doing.

  1. Clone the source down to your machine.
    git clone git://
  2. Type cd roundhouse
  3. Type git config core.autocrlf false to leave line endings as they are.
  4. Type git status. You should not see any files to change.
  5. Run build.bat. NOTE: You must have git on the path (open a regular command line and type git).


  • .NET Framework 4.6.1 (for the full framework version), or
  • .net core 2.0+ (for the dotnet core distribution)
  • SA access to the sql server (for creation or deletion)
  • change access to the database (for everything else)


Donations Accepted - If you enjoy using this product or it has saved you time and money in some way, please consider making a donation.
It helps keep to the product updated, pays for site hosting, etc.



Two Bugfixes

After the 0.9.0 release, users identifed two significant bugs. These are fixed in a quick point release.

(See release for the full release notes)


Focus on modernising tooling

RoundhousE has had some catching-up to do tooling-wise. Dependency on .NET 3.5, old, NAnt-based build chain, etc. We are starting this work. It is not done yet, but on its way. Feature-wise not a lot to brag about, but RH.exe should now be able to run on Windows Server 2016 out-of-the-box, because it is no longer dependent on .NET 3.5.

(See release for the full release notes)


Catching up with Pull Requests (See release for the release notes)


OMG!! It's a RoundhousE release!!

It's been a long time coming. I didn't want to get bogged down into writing the perfect release notes, so I am summarizing the last four years of commit history. I hope that no one that contributed feels slighted by my failure to specifically acknowledge your contribution. I intend to do better in the future.


  • Added option to run scripts outside of transaction scope
  • Handle Azure connection strings
  • Properly split files that start with a splitter
  • Respect Transaction flag
  • Improved Logging
  • Added switch --warnandignoreononetimescriptchanges

Bug Fixes

  • Only retry on SQL Connection errors
  • Correctly handle postgres connection disposed error



  • Use git as official repository. (mpareja)
  • Upgrade UpperCut to version 1.4.2. (ferventcoder)
  • Database Restore: use restore specific timeout value. (icetoast - pull #90)
  • Ignore EOL format changes when detecting script changes. (lahma - pull #104)
  • Include SQL Print statements in debug log. (ferventcoder - issue #68)
  • Include statement being run in log when an error occurs. (ferventcoder - issue #66)
  • Added 'runBeforeUp' anytime directory. (cdrexle - pull #51)
  • Support resolving version from a text file. (mpareja - pull #50, pull #55)
  • Add option to turn off copying scripts into 'itemsRan' directory. (lahma - pull #47)
  • WarnOnOneTimeScriptChange will now cause changed one-time scripts to be re-run. (BiggerNoise - pull #35)
  • Upgrade NHibernate to version 3.3.2. (drusellers)
  • Upgrade FubuCore, HtmlTags and StructureMap. (drusellers)

Bug Fixes

  • SQL Batch Parser: handle training comments, single quotes. (mpareja - pull #108)
  • SQL Batch Parser: fix hang. (AndersMalmgren - pull #100)
  • Token Replacer: preserve case for unmatched tokens. (mpareja - pull #65)
  • SQL scripts no longer truncated to 4000 characters. (charoco, ferventcoder - pull #61)
  • Oracle: Fix handling of null values. (rdingwall - pull #59, issue #58)
  • Script File Versioner: fix exception. (Michael Kobaly - issue #68 on Google Code)
  • Only change DB recovery mode if explicitly told to. (ferventcoder - issue #69 on Google Code)
  • Fixed the debug command line switch. (ferventcoder - issue #40)
  • Ensure version 1.2.10 of log4net is used when installing NuGet packages. (ferventcoder - issue #41)
  • Fix: Improve logging of RH exceptions. (torkelo - pull #60)

Breaking Changes

  • RoundhousE will change the DB recover mode if the recoverymode mode option is explicitly set to simple or full. In the past, RoundhousE would default to full but would only ever set the recovery mode while creating/restoring the database. If you depended on RoundhousE to create/restore the database for you and you don't want the database server default to be used, you should specify the recovery mode option.


  • Fixed a few issues with using the connection string. You should now be able to only supply the connection string and not server/database as well.

  • Fixed a collation issue with RoundhousE id columns in its tracking tables. See [issue 46] ( for details. (r274)
  • RestoreFromPath can take a relative path. (r269)
  • RH can now upgrade it's internals without user interaction. See [issue 40] ( for details. (r268)
  • MSBuild / NAnt tasks are deprecated and no longer hooked up. Please use the console and call it from your tasks. (r268)
  • RH has differencing support with NHibernate Schema Generation/Updates (r267 - branch, r268)
  • FluentNhibernate and NHibernate are now being used for the internals (r267 - branch, r268)
  • SMO is deprecated and removed (r203 - branch, r268)
  • Gems and build upgrades, oh my! (r259)
  • SQL2000 to 2005 is now a smooth transition. (r221)
  • Fix: SQL2000 - ScriptsRun now correctly references Version for the foreign key. (r220)
  • Fix: Connection should be initialized before asking the database if it supports ddl transactions. (r215)
  • Fix: Uppercase User names when running with Oracle. (r200)
  • RH has differencing support with RedGate. See sample project for details. (r197)
  • Fix: Scrips run errors now updates version number and path w/out a dependency on scripts run. Allows for it to finish during transactional runs and still capture errors. (r196)
  • Fix: Capture errortastic changes to DDL/DML (up) files in the script run errors table. (r191)
  • Added admin connection string to do administrative tasks. (r190)

Prior Release Notes

Prior releases notes are on the wiki.


UppercuT - Automated Builds (automated build in 10 minutes or less?!)