2012-05-23 8 views
5

Mentre la conversione di progetto di database per SSDT e l'aggiornamento a SQL Server 2012 Ho bisogno script di distribuzione di lavorare sia per SQL Server 2008 e il 2012.SSDT, ho bisogno di diversi dacpac se devo distribuire lo stesso db a SQL Server 2008 e 2012?

Sto usando sqlpackage.exe /Action:Publish di distribuire gli ultimi bit di database.

Nelle proprietà del progetto sqlproj vedo un menu a discesa piattaforma di destinazione con opzioni SQL Server 2005/2008/2012. Genera un dacpac diverso se cambio questa piattaforma di destinazione? Devo portare due versioni di dacpac per ogni versione di SQL Server?

Oppure lo stesso Dacpac funzionerà con qualsiasi versione di SQL Server?

risposta

4

La risposta breve è sì: diversi DACPAC per diverse edizioni di SQL Server. Bob Beuachemin ha scritto un utile blog post su DAC Fx3.0 rispetto a DAC 2.0

6

So che questo è di 11 mesi, ma c'è un'opzione quando si arriva alla distribuzione specificamente per questo scenario - AllowIncompatiblePlatform.

//Set Deployment Options 
DacDeployOptions dacOptions = new DacDeployOptions(); 
dacOptions.AllowIncompatiblePlatform = true; 

senza impostare l'opzione che può schierare un DAC 2008 al sql2012, ma sarà errore se schiero un DAC 2012 al SQL2008 con:

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. 

Impostare l'opzione significa che non capisco questo errore e può essere implementato in versioni precedenti (credo che al 2005). NB Potrebbe anche essere necessario impostare l'opzione TreatVerificationErrorsAsWarnings su true - YMMV.

+2

Sono stato in grado di distribuire un dacpac SQL2012 a SQL2008R2 con solo l'opzione 'AllowIncompatiblePlatform = true;'. –

2

Dalla riga di comando utilizzando SqlPackage.exe, utilizzare l'opzione p:AllowIncompatiblePlatform. Verrà comunque visualizzato un avviso, ma continuerà. Funziona da un dacpac di SQL Server 2012 che passa a SQL Sever 2008 R2.

SqlPackage.exe /Action:Publish 
    /SourceFile:"testdb.dacpac" 
    /TargetDatabaseName:testDb 
    /p:AllowIncompatiblePlatform=true 
    /TargetServerName:"testserver"