TF255146: Team Foundation Server requires SQL Server 2008 R2 (10.50.1600) or greater.

While trying to configure a 2012 version of Team Foundation Server Express or Basic, you may hit the following error message during the Readiness Checks:

TF255146: Team Foundation Server requires SQL Server 2008 R2 (10.50.1600) or greater. The SQL Server instance A5100854\SqlExpress you supplied is version ??.??.???.
Cannot assign a default value to a local variable.  Must declare the scalar variable <“@BackupCompressionDefault> ”.

Unfortunately this error message does not provide very helpful or precise information, and you may not be sure what you need to do to get past it.  The message has been improved in the next release of TFS.  Until then, please consult one of the 2 possible scenarios below for information on how to unblock configuration of TFS 2012.

Scenario 1: Configuring with the TFS Basic wizard

If you're configuring with the Basic wizard, the error message means that you provided a SQL Server instance that is too old to be upgraded automatically or used in place with TFS 2012.  When the version number shows up as "??.??.???" it means the instance is SQL 2005 or earlier, and TFS requires at least SQL Server 2008 R2.  In this situation you have several options.  You can:

  1. Return to the previous page in the wizard and select a new SQL instance to configure TFS with.
  2. Manually upgrade the instance you chose to SQL 2008 R2 or higher.
  3. Uninstall the instance you chose.  TFS configuration can then install a newer version of SQL Express for you to use with TFS.

Scenario 2: Configuring with the TFS Express wizard (aka the "New Server" wizard)

If you're configuring with the Express wizard, the problem is a bit more complex.  You will still see the error message in cases where the SQL instance being used for configuration is too old to be upgraded automatically or used in place with TFS.  However, in the Express wizard there is no option to choose a particular SQL Express instance to configure TFS against.  TFS Express can only be configured with a SQL Express instance named "SQLEXPRESS," which is the default SQL Express instance name.  Any other instances of SQL Express on your server will be ignored.  Therefore, you can have an outdated version of SQL called SQLEXPRESS and also a newer, usable version of SQL with a different name, and configuration will still be blocked.  Your options for unblocking configuration on your server are to:

  1. Upgrade your SQL Express instance (the one named SQLEXPRESS) to SQL 2008 R2 or higher.
  2. Uninstall the instance named SQLEXPRESS so that TFS Express can install a fresh instance of SQL Express 2012 with the same name.

We hope this post is helpful to anyone who runs into this problem.