模式与VS2008中的MS Data Tools进行比较

时间:2010-05-06 13:16:49

标签: visual-studio-2008 sql-server-2008 data-comparison

执行在目标数据库上具有db_owner权限的模式比较时,会导致以下错误:

  

用户无权执行此操作。

使用SQL Server Profiler我发现执行针对主db视图的查询时出现此错误:[sys]。[dm_database_encryption_keys]

虽然明确忽略了所有对象类型但,但可以假定SQL Compare不需要访问db加密密钥。 另请注意:

  

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环境。

  

3 个答案:

答案 0 :(得分:1)

我发现的唯一成功的解决方法是将架构部署到本地开发数据库,​​然后使用该本地数据库作为源而不是数据库项目进行架构比较。

在这种情况下仍会出现错误,但不再禁用Write Updates按钮,并且架构会按预期更新。

答案 1 :(得分:0)

为什么不能尝试其他(外部)架构比较工具? 查看Red gate的SQL Compare。

答案 2 :(得分:0)

是否必须在VS 2008中使用MS Data工具? 我想你应该尝试这样的外部工具:

SQLDBDiff

这是用于比较数据库架构的非常好的工具。您也可以生成脚本来同步架构。