問題出現環境:
使用SQL Server Management Studio 2008 連線到SQL Server 2000的資料庫,點選其中一個Oracle連結伺服器,單擊“目錄”時,Linked Server彈出如下錯誤資訊.使用另外一個擁有sysadmin角色的賬號登入檢查發現沒有此類問題。
錯誤詳細資訊如下所示:有用的資訊只有一條: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];