DACPAC版本号更改导致漂移,但漂移报告为空

rya*_*lit 6 powershell dacpac sql-server-data-tools sql-server-data-project

我正在使用SQL Server数据层应用程序来控制数据库的源代码.我在Visual Studio中创建了SQL Server数据库项目,现在正在通过PowerShell自动部署DACPAC.在使用DacFx服务部署方法测试部署选项时,我一直在使用部署选项,特别是BlockWhenDriftDetected.

现在,根据我的理解,在将所述数据库部署并注册为数据层应用程序之后,在SQL Server中向外部部署的数据库添加某种类型的SQL Server对象(表,函数,sproc等)时会发生数据库偏移.说服务器.正如我已经测试过的那样,这种漂移检测似乎有点不对劲.

当我第一次部署/注册DACPAC时,当然一切都很好,并且没有漂移.但是,如果我唯一更改的是VS中我的数据库项目属性中的版本号,重建项目,然后尝试使用DacFx重新部署DACPAC文件,它会检测数据库漂移.

要部署我的DACPAC,我使用以下powershell代码:

Add-Type -Path "C:\Program Files (x86)\Microsoft SQL Server\120\DAC\bin\Microsoft.SqlServer.Dac.dll"

$dacservices = New-Object Microsoft.SqlServer.Dac.DacServices "server=(localdb)\v11.0;trusted_connection=true;"
$dacpac = [Microsoft.SqlServer.Dac.DacPackage]::Load("C:/Projects/Sample/DacProject/bin/Debug/MyDatabase.dacpac")

$deployOptions = New-Object Microsoft.SqlServer.Dac.DacDeployOptions
$deployOptions.RegisterDataTierApplication = $true;
$deployOptions.BlockWhenDriftDetected = $true;

$dacservices.Deploy($dacpac, "MyDatabase", $true, $deployOptions)
Run Code Online (Sandbox Code Playgroud)

更新版本号并重建后再次运行上面的代码,我将得到漂移检测错误:

Exception calling "Deploy" with "4" argument(s): "Could not deploy package.
Error SQL0: Database has drifted from its registered data-tier application.
Run Code Online (Sandbox Code Playgroud)

另外,当我检查数据库漂移时,让事情更加混乱......

Write-Host $dacservices.GenerateDriftReport("MyDatabase")
Run Code Online (Sandbox Code Playgroud)

我得到一份空报告,意思是一切都应该没问题:

<DriftReport xmlns="http://schemas.microsoft.com/sqlserver/dac/DriftReport/2012/02">
  <Additions />
  <Removals />
  <Modifications />
</DriftReport>
Run Code Online (Sandbox Code Playgroud)

这是一个错误还是我错过了什么?我很想忽略整个漂移检测并强制严格访问生产数据库,试图在事后限制变化.任何帮助将不胜感激.

谢谢.