代码改变世界

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

2014-06-18 09:08  潇湘隐者  阅读(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];