1

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 構成によるパラメーター化をサポートしています。
4

1 に答える 1

1

なぜそれが存在するのかについて明確な答えを得る唯一の方法は、msdeploy チームの誰かを見つけて尋ねることだと思います。

dacpacs の素晴らしい点は、SSDT チームがこれらの API (DacFX) を構築し、誰もが利用できるようにしたことです。これにより、人々は自由にこの種のことを行うことができます。msdeploy を既に使用している人々が dacpacs を展開するのに役立つのであれば、なぜでしょうか? ?

私はいくつかの異なる実装を見てきました.Visual Studioには公開とスキーマの比較があり、どちらもDacFxを使用しています.

すでに sqlpackage を使用していて、それを使用したい場合は、それを使用してください。

于 2015-06-04T08:44:02.437 に答える