我为什么要使用dbDacFx提供程序呢?

时间:2015-06-04 08:03:45

标签: sql-server iis webdeploy sql-server-data-tools dacpac

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

其中一种方法是使用dbDacFx提供程序通过Web Deploy本身。 请参阅: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配置进行参数化。

1 个答案:

答案 0 :(得分:1)

我想你唯一能得到确切答案的方法就是在msdeploy团队中找人并问他们。

关于dacpacs非常棒的事情是SSDT团队已经构建了这些api(DacFX)并让它们可供所有人使用,因此人们可以自由地做这种事情,如果它帮助已经使用msdeploy的人们部署dacpacs那为什么不呢?

我见过几个不同的实现,visual studio有发布+模式比较,它们都使用DacFx。

如果你已经使用了sqlpackage并想使用它,那就去吧。