Reputation: 1875
While converting database project to SSDT and upgrading to SQL Server 2012 I need deployment script to work for both SQL Server 2008 and 2012.
I am using sqlpackage.exe /Action:Publish
to deploy the latest database bits.
In sqlproj project properties I do see a target platform dropdown with options 2005/2008/2012 sql server. Does it generate a different dacpac if I change this target platform? Do I need to carry two versions of dacpac for each sql server version?
Or will the same dacpac work for any version of sql server?
Upvotes: 5
Views: 3374
Reputation: 1761
From the command line using SqlPackage.exe
, use the p:AllowIncompatiblePlatform
option. A warning will still be shown but it will continue. This works from a SQL Server 2012 dacpac going to SQL Sever 2008 R2.
SqlPackage.exe /Action:Publish
/SourceFile:"testdb.dacpac"
/TargetDatabaseName:testDb
/p:AllowIncompatiblePlatform=true
/TargetServerName:"testserver"
Upvotes: 3
Reputation: 5230
I know this is 11 months old, but there is an option when you come to deployment specifically for this scenario - AllowIncompatiblePlatform.
//Set Deployment Options
DacDeployOptions dacOptions = new DacDeployOptions();
dacOptions.AllowIncompatiblePlatform = true;
Without setting the option I can deploy a 2008 dac to sql2012, but it will error if I deploy a 2012 dac to sql2008 with:
Microsoft.Data.Tools.Schema.Sql.Deployment.DeploymentCompatibilityException:
A project which specifies SQL Server 2012 as the target platform cannot be published to SQL Server 2008.
Setting the option means I do not get this error and can deploy to previous versions (back to 2005 I believe). NB You may also need to set the option TreatVerificationErrorsAsWarnings to true - YMMV.
Upvotes: 9
Reputation: 4060
The short answer is yes - different DACPACs for different SQL Server editions. Bob Beuachemin wrote a useful blog post about DAC Fx3.0 vs. DAC 2.0
Upvotes: 4