我正在寻找在将 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 配置进行参数化。