sqlpackage.exe忽略BlockOnPossibleDataLoss?


13

我有一个dacpac,它已将BlockOnPossibleDataLoss设置为false,但是当我使用sqlpackage.exe运行它时,部署被阻止,并告诉我“列[a]被删除,可能会发生数据丢失。”

但是,当我使用完全相同的部署配置文件并从Visual Studio 2012发布时,它会通过。

Answers:


10

您是否尝试过/p:BlockOnPossibleDataLoss=false在命令行中执行sqlpackage.exe ?

我只是使用SQLPackage.exe创建测试数据库的.dacpac文件,然后使用该/p:BlockOnPossibleDataLoss=false选项发布了该文件,并且该文件覆盖了我的数据库。


我尝试过,但是没有帮助。我确实将问题缩小了一点。我在powershell脚本中执行该程序包,并且在try catch块中。看来即使设置了该标志,sqlpackage.exe也会创建一个异常(我希望否则)
nojetlag 2013年

1
当我们在Visual Studio Team System构建到Azure数据库中执行数据库部署任务时,这对我们非常有用。
Dan Csharpster,2017年

2

终于找到了问题,我在设置错误处理的Powershell脚本中执行了sqlpackage.exe

$Script:ErrorActionPreference = "Inquire"

由于我从未得到过Inquire,所以我认为问题出在sqlpackage.exe,但是在设置ErrorActionPreference之后,我又包含了另一个powershell脚本,结果所包含的脚本也设置了ErrorActionPreference,但设置为“ Stop”。仍然我相信,如果我设置了BlockOnPossibleDataLoss = false,则不会导致错误,但是至少我现在有一种处理它的方法。


2

我遇到了同样的问题,并且/ p:BlockOnPossibleDataLoss = false不起作用。

就我而言,最终的解决方案是,还必须在项目文件的调试设置中进行设置:

项目调试设置

希望这对某人有帮助!:)


如果直接“发布”,则还必须在“高级”发布选项中设置此选项!
Pac0
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.