我有几十个链接服务器、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 标志。
这解决了问题: