生成发布脚本时出错:对象__refactorlog上的select权限被拒绝了?

时间:2014-06-26 08:45:25

标签: sql-server sql-server-data-tools

在我的SSDT项目中,为什么我会收到此错误?

“对象__refactorlog上的选择权限被拒绝了?”

项目中有一个重构日志项目。

我选择从VS内部生成发布脚本。

编辑:目标是一个生产服务器,所以我没有权限创建表或在那里选择数据,我只需创建部署脚本,而且无论如何都没有表__refactorlog ..

2 个答案:

答案 0 :(得分:4)

您需要比当前在该服务器上拥有的更多权限才能生成发布脚本。我验证在代码处理重构操作中有一个调用“SELECT OBJECT_ID(N'dbo .__ RefactorLog')”来检查表是否存在。由于您没有权限甚至要求选择对象,因此代码可能会失败。您可以通过对数据库运行该查询并查看是否收到错误来自行检查。

确定所需权限的建议:

  • 尝试右键单击数据库并选择“创建新项目”。如果无法将数据库定义提取到项目中,则表明您没有对数据库具有“查看定义”权限
  • 如果情况并非如此,那么问题是您需要对__refactorlog表具有读取权限而没有它。解决方案是获取对该表的访问权限,否则您必须验证不需要重构并从项目中删除重构日志(不推荐,因为通常您希望保留重构以避免可能的数据丢失和其他问题)。

答案 1 :(得分:0)

以下是我处理此问题的方法,即使它是一个糟糕的替代品,对自动化数据库发布没有用。我编写发布脚本,然后进行全局搜索和替换,将“dbo”更改为我可以访问的模式。这对我有用,因为我已经删除了所有试图编写我无法控制的对象的选项,并且dbo架构完全不在我的手中,就像你一样。

我并不为此感到自豪,我希望我可以选择控制该表所在的位置,但至少完全支持Visual Studio的重构功能。