在目标数据库上执行具有 db_owner 权限的模式比较会导致以下错误:
用户无权执行此操作。
使用 SQL Server Profiler 我发现执行针对主数据库视图的查询时会发生此错误:[sys].[dm_database_encryption_keys]
虽然特别忽略了所有对象类型,但表一会假定 SQL 比较不需要访问数据库加密密钥。另请注意:
http://social.msdn.microsoft.com/Forums/en-US/vstsdb/thread/c11a5f8a-b9cc-454f-ba77-e1c69141d64b/
一种解决方案是将 GRANT VIEW SERVER STATE 授予 db 用户,但在我的情况下,我没有托管数据库服务,也不会获得服务器状态的权限。
还尝试在比较文件中排除 DatabaseEncryptionKey 元素。
<PropertyElementName>
<Name>Microsoft.Data.Schema.Sql.SchemaModel.SqlServer.ISql100DatabaseEncryptionKey</Name>
<Value>ExcludedType</Value>
</PropertyElementName>
有人有解决方法吗?
我们使用 MS Data Tools 比较从数据库项目发布到 DTAP 环境。