代码改变世界

Linked Server: EXECUTE permission denied on object 'xp_prop_oledb_provider', database 'master', owner 'dbo'

  潇湘隐者  阅读(2838)  评论(0编辑  收藏  举报

问题出现环境:

        使用SQL Server Management Studio 2008 连接到SQL Server 2000的数据库,点击其中一个Oracle链接服务器,单击“目录”时,Linked Server弹出如下错误信息.使用另外一个拥有sysadmin角色的账号登录检查发现没有此类问题。

clipboard

错误详细信息如下所示:有用的信息只有一条:EXECUTE permission denied on object 'xp_prop_oledb_provider', database 'master', owner 'dbo'. (Microsoft SQL Server,错误: 229)

   1: 标题: Microsoft SQL Server Management Studio
   2: ------------------------------
   3: 无法为该请求检索数据。 (Microsoft.SqlServer.Management.Sdk.Sfc)
   4: 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&;LinkId=20476
   5: ------------------------------
   6: 其他信息:
   7: 执行 Transact-SQL 语句或批处理时发生了异常。 (Microsoft.SqlServer.ConnectionInfo)
   8: ------------------------------
   9: EXECUTE permission denied on object 'xp_prop_oledb_provider', database 'master', owner 'dbo'. (Microsoft SQL Server,错误: 229)
  10: 有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&;ProdVer=08.00.2055&EvtSrc=MSSQLServer&EvtID=229&LinkId=20476
  11: ------------------------------
  12: 按钮:
  13: 确定
  14: ------------------------------

原因及解决方法:

  出现这个问题是由于权限问题导致,只需要执行下面SQL语句授予相关权限即可(如果该登录名在映射关系中没有master数据库的映射关系,需要授予master数据库的public角色给该登录名),注意:login需要用具体登录名替换.

   1: USE master;
   2:  
   3: GO
   4:  
   5: GRANT EXECUTE ON XP_PROP_OLEDB_PROVIDER TO [login];
   6:  

    如果是SQL Server 2005 或以上版本,可以执行下面SQL语句

   1: USE master;
   2: GO
   3:  
   4: EXECUTE ON SYS.XP_PROP_OLEDB_PROVIDER TO [login];

编辑推荐:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
· C++代码改造为UTF-8编码问题的总结
· DeepSeek 解答了困扰我五年的技术问题
阅读排行:
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 清华大学推出第四讲使用 DeepSeek + DeepResearch 让科研像聊天一样简单!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
历史上的今天:
2013-06-18 迁移Reporting Services的方法与WMI错误
点击右上角即可分享
微信分享提示