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:
ele até cria, mas não funciona, quando tento acessar da o seguinte erro:
segue a query de teste utilizada:
A configuração no tsnames.ora:
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
Curtir tópico
+ 0
Responder
Posts
05/08/2009
Etspaz
consegui criar o linked server e acessar corretamente, seguindo o exemplo que encontrei num bolg:
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].
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
Clique aqui para fazer login e interagir na Comunidade :)