gpt4 book ai didi

sql-server - SqlPackage.exe 和 MsBuild SqlPublishTask 之间的差异

转载 作者:行者123 更新时间:2023-12-02 23:04:28 25 4
gpt4 key购买 nike

我正在尝试生成一个输出 dacpac 文件,然后可以将其部署到不同的环境。到目前为止,我一直使用目标发布直接从 msbuild 进行部署,如下所示:

msbuild dbproject.sqlproj /t:Build;Publish /p:SqlPublishProfilePath=test.publish.xml  /p:UpdateDatabase=True  /p:PublishScriptFileName=test.sql

生成的输出脚本的大小(仅供引用,因为 UpdateDatabase 设置为 true)是 2.5MB。

我的新方法是构建项目,存储 dacpac,然后使用 sqlpackage 和“发布”操作进行部署。此新方法报告了一些 msbuild SqlPublishTask 未报告的警告。
作为引用,我运行了下一个命令:

sqlpackage.exe /action:script /outputpath:test.sql /sourcefile:dbproject.dacpac /pr:test.publish.xml

输出脚本的大小现在为 4.9MB。
报告的具体警告不是这里关心的,关心的是脚本不同,我的问题是有什么不同?
更重要的是哪一种是最好/最安全的部署方法?

最佳答案

Sqlpackage.exe 更详细,在部署期间包含更多对象,它会删除表的权限以避免在修改对象期间进行任何修改,然后继续创建或修改它们。
不同之处在于,所有对象都包含在 sqlpackage 的脚本中,无论它们是否与目标数据库不同。

尽管最初给出的警告并不是问题,但使用 sqlpackage 方法我发现某些存储过程不在解决方案中,仅在数据库中。这些“孤立”sp 引用正在部署的表,这会发出警告,指出表中的更改可能会破坏 sp。

关于sql-server - SqlPackage.exe 和 MsBuild SqlPublishTask 之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31559069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com