5

データベース プロジェクトを SSDT に変換し、SQL Server 2012 にアップグレードする際に、SQL Server 2008 と 2012 の両方で機能する配置スクリプトが必要です。

sqlpackage.exe /Action:Publish最新のデータベース ビットを展開するために使用しています。

sqlproj プロジェクトのプロパティで、オプション 2005/2008/2012 sql サーバーを含むターゲット プラットフォームのドロップダウンが表示されます。このターゲット プラットフォームを変更すると、別の dacpac が生成されますか? SQL Server のバージョンごとに 2 つのバージョンの dacpac を使用する必要がありますか?

または、同じ dacpac がどのバージョンの SQL サーバーでも機能しますか?

4

3 に答える 3

9

これが 11 か月前のものであることはわかっていますが、このシナリオ専用の展開を行う場合、AllowIncompatiblePlatform というオプションがあります。

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

オプションを設定しなくても、2008 dac を sql2012 にデプロイできますが、2012 dac を sql2008 にデプロイすると、次のようにエラーが発生します。

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.

オプションを設定すると、このエラーが発生せず、以前のバージョンに展開できることを意味します (2005 年までさかのぼると思います)。注: オプション TreatVerificationErrorsAsWarnings を true - YMMV に設定する必要がある場合もあります。

于 2013-05-03T12:08:09.603 に答える
4

短い答えはイエスです。SQL Server のエディションごとに異なる DACPAC を使用します。Bob Beuachemin は、DAC Fx3.0 と DAC 2.0 について有益なブログ投稿を書きました。

于 2012-05-23T23:30:35.100 に答える
3

を使用してコマンド ラインからSqlPackage.exe、オプションを使用しp:AllowIncompatiblePlatformます。警告は引き続き表示されますが、続行されます。これは、SQL Server 2012 dacpac から SQL Sever 2008 R2 に移行することで機能します。

SqlPackage.exe /Action:Publish 
   /SourceFile:"testdb.dacpac" 
   /TargetDatabaseName:testDb 
   /p:AllowIncompatiblePlatform=true
   /TargetServerName:"testserver"
于 2015-10-31T17:50:16.157 に答える