problema ao criar linked server no sql server para oracle

05/08/2009

0

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)

    )

  )



Etspaz

Etspaz

Responder

Posts

05/08/2009

Etspaz

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:

[code]
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].


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar