Web アプリケーションを IIS にデプロイするたびに dacpac を自動的に公開する方法を検討しています。
これらの方法の 1 つは、dbDacFx プロバイダーを使用して、Web Deploy 自体を使用することです。参照: http://www.iis.net/learn/publish/using-web-deploy/dbdacfx-provider-for-incremental-database-publishing
2 つのデータベースを同期するために彼らが提供する例のいくつかは、次のようになります。
msdeloy.exe -Verb:Sync ^
-Source:dbDacFx="Data Source=.\SQLEXPRESS; Database=OldDatabase; User ID=sa; Password=P@$$W0rd" ^
-Dest:dbDacFx="Data Source=.\SQLEXPRESS; Database=NewDatabase; User ID=sa; Password=P@$$W0rd"
msdeloy.exe -Verb:Sync ^
-Source:dbDacFx="C:\Users\Admininstrator\Documents\database.dacpac" ^
-Dest:dbDacFx="Data Source=.\SQLEXPRESS; Database=NewDatabase; User ID=sa; Password=P@$$W0rd"
私の質問は、一体なぜこれに SqlPackage.exe を使用しないのでしょうか?
SqlPackage.exe /Action:Publish ^
/SourceConnectionString:"Data Source=.\SQLEXPRESS; Database=OldDatabase; User ID=sa; Password=P@$$W0rd" ^
/TargetConnectionString:"Data Source=.\SQLEXPRESS; Database=NewDatabase; User ID=sa; Password=P@$$W0rd"
SqlPackage.exe /Action:Publish ^
/SourceFile:"C:\Users\Admininstrator\Documents\database.dacpac" ^
/TargetConnectionString:"Data Source=.\SQLEXPRESS; Database=NewDatabase; User ID=sa; Password=P@$$W0rd"
私が知る限り、Web Deploy はテーブルに新しいものをもたらしません。dbDacFx プロバイダーが存在するのはなぜですか?
私がすでに検討したこと:
- Web 配置の dbDacFx は、配置をトリガーするマシンではなく、アプリケーション サーバーで実行されます。
- 管理者以外のデプロイは、wmsvc 委任ルールによって可能です (しかし、なぜ例では統合セキュリティの代わりに「sa」を使用しているのですか?)
- msdeploy.exe と SqlPackage.exe はどちらも、xml 構成によるパラメーター化をサポートしています。