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)
这是一个错误还是我错过了什么?我很想忽略整个漂移检测并强制严格访问生产数据库,试图在事后限制变化.任何帮助将不胜感激.
谢谢.
| 归档时间: |
|
| 查看次数: |
616 次 |
| 最近记录: |