Loading…

Casos do Dia a Dia: Problema para acessar o Oracle via Linked Server pelo SQL Server

Olá Pessoal,

Passando aqui para deixar uma dica rápida de um caso que aconteceu comigo.

Um cliente entrou em contato dizendo que estava com um problema para utilizar um Linked Server do SQL Server para o Oracle.

O Linked Server funcionava para algumas tabelas e outras não.

Segue abaixo o erro que era retornado:

Mensagem 7319, Nível 16, Estado 1, Linha 1
O provedor do OLE DB “ORAOLEDB.Oracle” para o servidor vinculado “NOME_LINKEDSERVER” retornou um índice “NON-CLUSTERED and NOT INTEGRATED” “NOME_INDICE_ORACLE” com o ordinal de marcador incorreto 0.

A query também funcionava via OpenQuery, mas não funcionava via um SELECT normal com o caminho completo para a tabela no Oracle.

A solução para esse problema foi abrir as propriedades do Provider do Oracle:

Server Objects->Linked Servers->Providers->Botão direito em OraOLEDB.Oracle->Properties

E em seguida desmarcar a opção “Index as access path”.

Pela mensagem de erro já dava para imaginar que seria algo ligado a índices e como apareceu o nome do índice lá do Oracle, dava para perceber que era algo que o SQL estava acessando lá.

Olhando no BOL o que essa opção significa:

Index as access path: SQL Server attempts to use indexes of the provider to fetch data. By default, indexes are used only for metadata and are never opened.

Ou seja, o SQL server estava tentando utilizar um índice do Oracle para retornar o resultado, o que não funciona muito bem entre esses SGBDs.

Gostou dessa dica?

Cadastre seu e-mail para receber novos Posts e curta minha Página no Facebook para receber Dicas de Leituras e Eventos sobre SQL Server.

Confira mais experiências do Dia a Dia de um DBA no meu Treinamento de Tarefas do Dia a Dia de um DBA.

Abraços,

Fabrício Lima

MCITP – Database Administrator

Consultor e Instrutor SQL Server

Trabalha com SQL Server desde 2006

Deixe uma resposta