与 VS2008 中的 MS Data Tools 的架构比较
-
03-10-2019 - |
题
在目标数据库上执行具有 db_owner 权限的架构比较时,会导致以下错误:
用户没有执行此操作的权限。
使用 SQL Server Profiler,我发现执行针对主数据库视图的查询时会发生此错误:[sys].[dm_database_encryption_keys]
虽然专门忽略所有对象类型但是 表格 人们会认为 SQL Compare 不需要访问数据库加密密钥。另请注意:
http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/c11a5f8a-b9cc-454f-ba77-e1c69141d64b/
一种解决方案是将 VIEW SERVER STATE 授予 db 用户,但就我而言,我不托管数据库服务,并且不会获得服务器状态的权限。
还尝试在比较文件中排除 DatabaseEncryptionKey 元素。
<PropertyElementName>
<Name>Microsoft.Data.Schema.Sql.SchemaModel.SqlServer.ISql100DatabaseEncryptionKey</Name>
<Value>ExcludedType</Value>
</PropertyElementName>
有人有解决方法吗?
我们使用 MS Data Tools 比较从数据库项目发布到 DTAP 环境。
解决方案
我发现的唯一成功的解决方法是将架构部署到本地开发数据库,然后使用该本地数据库作为源而不是数据库项目来进行架构比较。
在这种情况下仍然会出现错误,但是 Write Updates
按钮不再被禁用,并且架构按预期更新。
其他提示
您为什么不能尝试其他(外部)架构比较工具?查看Red Gate的SQL比较。
不隶属于 StackOverflow