Sql-Server
無法為除 Windows 管理員登錄之外的所有人創建 OLE DB 提供程序“OraOLEDB.Oracle”的實例
我有幾十個連結伺服器、MSSQL、Teradata 和 Oracle。這些在 SQL Server 2019 上。Oracle 伺服器正在使用 OraOLEDB.Oracle 19c 客戶端。它們都是使用相同的參數化腳本創建的。
錯誤資訊:
無法為連結伺服器“XXXXXXX”創建 OLE DB 提供程序“OraOLEDB.Oracle”的實例。
編輯:適用於 Windows 管理員的登錄名,但不適用於任何其他 SA 登錄名。
錯誤號是 7302 但不是 DLL 註冊問題
該腳本用於在 SQL Server 1 和 SQL Server 2 上創建連結伺服器,在 #1 上一切正常。在 #2 上,MSSQL 和 Teradata 伺服器很好,但 Oracle 伺服器只能使用用於安裝 Oracle 的帳戶。我嘗試將所有權利授予 Oracle base 和 Oracle Home 上的所有人進行測試,但這沒有幫助。
所有連結伺服器都設置為使用遠端使用者和遠端密碼進行所有登錄。下面是執行 sp_addlinkedsrvlogin 的腳本部分。
SET @SQL = N'EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=@ServerName,@useself=N''False'',@locallogin=NULL,@rmtuser=@UserName,@rmtpassword=@Password' EXEC $(TargetServer).master.dbo.sp_executesql @stmt=@SQL ,@params = N'@ServerName nvarchar(250), @UserName nvarchar(250), @Password nvarchar(250)' ,@ServerName=@ServerName ,@UserName=@UserName ,@Password=@Password
解決方案原來是 OraOLEDB.Oracle 提供程序上的 AllowInProcess 標誌。
這解決了問題:
EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1