Linked Server do SQL Server para Oracle dando erro: “Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server “LinkedServerName””.

Olá pessoal tudo certo?

No post de hoje irei abordar sobre uma falha que aconteceu depois que configurei o linked server do SQL Server para o Oracle, no post anterior mostrei como configurar o linked server, porém depois de configurado, os usuários reclamaram que não estavam conseguindo executar consultas no SQL Server buscando dados no Oracle.

Os usuários estavam tentando executar um select simples:

SELECT * FROM OPENQUERY(LinkedServerName, ‘select * from oracleschema.tablename’)

Ou

SELECT * FROM LinkedServerName..oracleschema.tablename

Retornava a seguinte mensagem de erro:

“Cannot create an instance of OLE DB provider “OraOLEDB.Oracle” for linked server “.

Fiz os testes com o meu usuário no servidor e retornava o resultado esperado, porém quando executava o SELECT em algum client retornava o erro.

Após algumas tentativas e erros encontrei uma thread sobre o erro no fórum sqlservercentral e encontrei a solução e vou compartilhar com vocês.

http://www.sqlservercentral.com/Forums/Topic482481-146-1.aspx

Para solucionar o problema precisamos habilitar a opção “Allow inprocess” na configuração do Provider do Oracle, para realizar essa alteração você tem que ser membro da role Sysadmin.

Para habilitar a opção Allow inprocess você pode fazer tanto por interface gráfica ou por script.

1) Expandir a pasta “Server Objects”

1

2) Expandir a pasta “Linked Server e Providers”

2

3) Clicar com o botão direito no provider do Oracle “OraOLEDB.Oracle” e Habilitar a opção “Allow inprocess”

3

Para fazer via script basta executar o script abaixo:

USE [master]
GO
EXEC master.dbo.sp_MSset_oledb_prop N'OraOLEDB.Oracle', N'AllowInProcess', 1
GO

Bom pessoal até a próxima.

5 Comments

Deixe uma resposta