Desejo acessar dados em um banco de dados Oracle 11g do SQL-Server 2008
Eu configuro um servidor vinculado e quando executo
select * from [Link_server_name]..Oracle_schema.Oracle_table
e Oracle_table contém as colunas Number e varchar2, todas funcionam como exceto.
Mas quando o Oracle_table contém uma coluna CLOB, recebo o seguinte erro:
O controlador de banco de dados OLE 'MSDAORA' para o servidor de verificação 'L_V407SR8T' e o código de erro 'Erro não especificado' foram excluídos.
O erro de Oracle OLE DB-Anbieter 'MSDAORA' para o servidor de verificação 'L_V407SR8T' hat die Meldung 'ocorreu, mas a mensagem de erro não pôde ser recuperada do Oracle.' zurückgeben.
O controlador de banco de dados OLE 'MSDAORA' para o servidor de verificação 'L_V407SR8T' ou o tipo de dados 'Tipo de dados não é suportado.' zurückgeben.
Msg 7306, nível 16, estado 2, linha 1
Die '"MCCAPP". "DOGGRUPPEN"' - Tabela de Anbiet OLE DB 'MSDAORA' para o servidor de verificação 'L_V407SR8T' kann nicht geöffnet.
Usando OPENQUERY
SELECT * FROM OPENQUERY([L_V407SR8T], 'Select CLOB_COLUMN from Oracle_table' )
eu recebo
O erro de Oracle OLE DB-Anbieter 'MSDAORA' para o servidor de verificação 'L_V407SR8T' hat die Meldung 'ocorreu, mas a mensagem de erro não pôde ser recuperada do Oracle.' zurückgeben. O controlador de banco de dados OLE 'MSDAORA' para o servidor de verificação 'L_V407SR8T' ou o tipo de dados 'Tipo de dados não é suportado.' zurückgeben.
Desculpe as mensagens de erro em alemão.
Minha pergunta: Existe alguma maneira de ler colunas CLOB por meio de servidores vinculados?
EDITAR:
- O Assistente para Importação e Exportação do SQL Server parece depender também do OLE DB e é péssimo nas mesmas tabelas
- Estou me perguntando, se o problema depende do uso dos conjuntos de caracteres, mas não posso alterá-los
- Como solução prática, eu uso alguns scripts do PowerShell para obter os dados, mas
fonte
Respostas:
Baixe e instale um cliente de banco de dados Oracle 11 em sua máquina SQL Server 2008.
Configure um servidor vinculado usando um provedor Oracle OLE DB (OraOLEDB.Oracle).
Verifique se "Allow InProcess" está ativado nas opções do provedor.
O cliente Oracle 11 OLE DB suporta CLOBs.
fonte
Um comentário a uma resposta SO question Como ler uma coluna CLOB no Oracle usando o OleDb?
contém um link para a antiga postagem de suporte da Microsoft com a seguinte declaração
Seria bom encontrar algumas referências mais atuais.
Eu fiz algumas pesquisas no Google e encontrei apenas soluções alternativas. Receio que o tipo de dados ainda não seja suportado.
Editar 02/05/2011
Realmente não entendo por que a Microsoft não consegue corrigir esse problema. O script do PowerShell a seguir usa o OLE-DB para ler uma tabela que contém uma coluna CLOB de um banco de dados Oracle e inserir os dados em uma tabela semelhante existente no Sql-Server usando bulkCopy, que é uma maneira muito eficiente.
Ajuste as seguintes cadeias de conexão, consulta e nome da tabela para sua instalação:
O código a seguir copia a tabela oracle em uma tabela sql-server
BTW: o código é baseado no projeto codeplex do Chade Millers
Atualmente, usar o PowerShell é a única maneira que conheço de copiar dados com CLOBs do Oracle para o Sql-Server sem usar C # ou qualquer ferramenta de terceiros.
Não tive êxito usando o Assistente de Importação / Exportação nem os servidores vinculados.
fonte
No new updates are planned for future releases of these components including their support against versions later than Oracle 8i.