Cri*_*n T 5 sql-server msbuild sqlpackage
我正在尝试生成一个输出dacpac文件,然后我可以将其部署到不同的环境中.到目前为止,我使用目标发布直接从msbuild进行部署,例如:
msbuild dbproject.sqlproj /t:Build;Publish /p:SqlPublishProfilePath=test.publish.xml /p:UpdateDatabase=True /p:PublishScriptFileName=test.sql
Run Code Online (Sandbox Code Playgroud)
生成的输出脚本的大小(仅供参考,因为UpdateDatabase设置为true)为2.5MB.
我的新方法是只构建项目,存储dacpac然后使用sqlpackage进行部署,并执行"发布"操作.这个新方法报告了msbuild SqlPublishTask未报告的一些警告.
作为参考,我运行了下一个命令:
sqlpackage.exe /action:script /outputpath:test.sql /sourcefile:dbproject.dacpac /pr:test.publish.xml
Run Code Online (Sandbox Code Playgroud)
并且输出脚本的大小现在是4.9MB.
报告的具体警告不在此关注,关注的是脚本不同,我的问题是有什么区别的?
更重要的是哪一个是最好/最安全的部署方法?
Sqlpackage.exe 更详细,在部署期间包含更多对象,它会删除表的权限以避免在修改对象期间进行任何修改,然后继续创建或修改它们。
不同之处在于,所有对象都包含在 sqlpackage 的脚本中,无论它们是否与目标数据库不同。
尽管最初给出的警告并不是问题,但使用 sqlpackage 方法我发现某些存储过程不在解决方案中,仅在数据库中。这些“孤立”sp 引用正在部署的表,这会发出警告,指出表中的更改可能会破坏 sp。
| 归档时间: |
|
| 查看次数: |
843 次 |
| 最近记录: |