Ir para conteúdo
Fórum Script Brasil
  • 0

problema ao criar linked server de sql server com oracle


etspaz

Pergunta

Boa tarde pessoal,

Estou precisando criar um linked server de um banco no sql server 2000 para o oracle 9i.

Seguindo alguns exemplos da net, fiz o sequinte:

EXEC sp_addlinkedserver 'CRC','Oracle','MSDAORA','IP SERVIDOR'
EXEC sp_addlinkedsrvlogin 'CRC2', 'false', NULL, 'USUARIO', 'SENHA'
ele até cria, mas não funciona, quando tento acessar da o seguinte erro:
Server: Msg 7399, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA' reported an error.  
[OLE/DB provider returned message: ORA-12514: TNS:listener não conseguiu resolver o SERVICE_NAME fornecido no descitor de conexão
]
OLE DB error trace [OLE/DB Provider 'MSDAORA' IDBInitialize::Initialize returned 0x80004005:   ].
segue a query de teste utilizada:
select * from CRC..CRCOW.TB_RECEITATRAFEGO 
WHERE UF = 'PA' AND CICLO='71' AND COMPETENCIA = '200904' AND DTCHAM ='8/4/2009'
AND CSP = '' AND TARIFA='CHAMADA LOCAL' AND DIRECAO = 'MMO' AND SENTIDO = 'S'
AND HORARIO='N' AND AREAORIGEM = 'PAH037' AND PLANO = 'PLANO NAC6 100 MIN' 
AND INDICADORFATURADO='0' AND VALORLIQUIDO='0' AND VALORBRUTO='7,04' 
AND DURACAOFRANQUEADA='0' AND DURACAOTARIFADA='1326' AND DURACAOREAL='1272'
AND QUANTIDADE=15 AND INSERT_DT='10/4/2009' AND CONTA='200904'
A configuração no tsnames.ora:
# CRC
CRCPR1 =

  (DESCRIPTION =

    (ADDRESS_LIST =

      (ADDRESS = (PROTOCOL = TCP)(HOST = ip servidor)(PORT = 1521))

    )

    (CONNECT_DATA =

      (SERVICE_NAME = crcpr1)

    )

  )

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

consegui criar o linked server e acessar corretamente, seguindo o exemplo que encontrei num bolg:

EXEC sp_addlinkedserver
@server = ‘ORA’,
@srvproduct = ‘Oracle’,
@provider = ‘OraOLEDB.Oracle’,
@datasrc = ‘(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)))’
GO


EXEC sp_addlinkedsrvlogin
@rmtsrvname = ‘ORA’,
@useself = ‘FALSE’,
@rmtuser = ‘orausr’,
@rmtpassword = ‘orapass’
GO
o exemplo usa o oracle xe, mas serviu para o 9i que é o que uso. Porém, agora estou com um problema de conversão entre os tipos number do oracle. Este problema já foi relatado pelo autor do exemplo, mas a solução que ele deu não me serve. usar openquery e dar um to_char no campo number. mas preciso fazer join com uma tabela do sql server, aí ele reclama:
Server: Msg 7356, Level 16, State 1, Line 1
OLE DB provider 'MSDAORA' supplied inconsistent metadata for a column. Metadata information was changed at execution time.
OLE DB error trace [Non-interface error:  Column 'QUANTIDADE' (compile-time ordinal 13) of object '"CRCOW"."TB_RECEITATRAFEGO"' was reported to have a DBTYPE of 130 at compile time and 5 at run time].

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...