1

我正在寻找在将 Web 应用程序部署到 IIS 时自动发布 dacpac 的方法。

其中一种方法是通过 Web Deploy 本身,使用 dbDacFx 提供程序。请参阅:http ://www.iis.net/learn/publish/using-web-deploy/dbdacfx-provider-for-incremental-database-publishing

他们为同步两个数据库提供的一些示例如下所示:

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 Deploy 的 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 回答