Pessoal,
Olha o que achei, estava procurando algumas coisas no google.
Achei a pergunta feita na Oracle_Br do Yahoo! sobre acessar informações entre Oracle e MS SQL Server, na íntegra (com correção ortográfica)! Detalhe para a data: 13/06/2007!
Segue abaixo o questionamento e a minha resposta:
Dúvida:
On 6/13/07, marcio_pelarin wrote:
> Bom dia !
>
> É possível acessar informações do MS_SQL_Server 2000 de dentro do
> Oracle e, estando os bancos em servidores diferentes numa mesma rede??
> Se for possível alguém tem exemplo ou algum tutorial de como realizar
> este acesso?
> Utilizo o Oracle 10.2.0.1.0 64 Bits em ambiente MS_Windows_2003 Server.
> Grato,
> Márcio
Resposta:
Marcio,
Eu andei fazendo isso, só que de versões diferentes de MS Sql Server e Oracle, só que esbarrei em um problema, somente conseguia fazer do MS SQL SERVER para o ORACLE, e não o contrario, pois o contrario
necessita de uma ferramenta da própria Oracle.
A conexão do SQL SERVER com ORACLE foi feita via LINKED SERVER.
Abaixo mais detalhes:
Título : Como criar um LINKED SERVER acessando o ORACLE.
Autor : Fernando Franquini (# = Meus comentários sobre o documento do Nilton Pinheiro)
Data : 30/06/2006
Fonte : http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=494758&SiteID=21
Abaixo informações do Nilton Pinheiro (http://www.mcdbabrasil.com.br) retiradas do link forums.microsoft.com.
—
Segue um exemplo de como criar o LINKED SERVER com uma instancia Oracle.
To create a linked server to access an Oracle database instance
1) Ensure the Oracle client software on the server running SQL Server is at the level required by the provider. The Microsoft OLE DB Provider for Oracle requires Oracle Client Software Support File version 7.3.3.4.0 or later, and SQL*Net version 2.3.3.0.4.
# Como já havia uma instalação do Oracle XE neste computador, os clients do Oracle ja estavam instalados.
2) Create an SQL*Net alias name on the server running SQL Server that points to an Oracle database instance. For more information, see the Oracle documentation.
# Já estavam criadas as configurações padrão para acessar o Oracle XE local, foram alteradas adicionando as informações, conforme esta mostrando abaixo:
3) Execute sp_addlinkedserver to create the linked server, specifying MSDAORA as provider_name, and the SQL*Net alias name for the Oracle database instance as data_ source. This example assumes that an
SQL*Net alias name has been defined as OracleDB.+
4) Use sp_addlinkedsrvlogin to create login mappings from SQL Server logins to Oracle logins. This example maps the SQL Server login Joe to the linked server defined in Step 3 using the Oracle login and
password OrclUsr and OrclPwd:
Após esta etapa de criação do LINKED SERVER tem-se que criar uma procedure, uma trigger ou uma função para preencher as tabelas do Oracle, tendo como origem os dados do SQL Server.
Abaixo um exemplo de uma função, retirada do mesmo fórum, feita por Daniel Teixeira.
—
1) Consultar Oracle e Preencher SQl Server através de linked Server, realmente aplicável através do exemplo abaixo:
Com uma função:
2) Preencher Oracle consultando o SQL.
Acredito que a melhor técnica seja usando o DTS se for o SQL Server 2000 ou SSIS se for 2005.
—
Ambiente criado para os testes:
O que eu pensei na época era criar uma procedure e atualizar uma tabela no Oracle, mas como as minhas informações não eram de locais fixos, eram muito variadas não resolveu assim e a solução encontrada foi via aplicar mesmo, fazendo acesso as duas bases diferentes via ODBC, pois estava sendo desenvolvido um sistema para fazer os acessos, ai foi resolvido assim.
Espero ter ajudado.
— Aqui acabou! 😀
sem mais,
capin
Capin, parabéns pelo artigo, com esta explicação passo-a-passo fica bem fácil de fazer. Tempos atrás precisei fazer algo parecido, só que entre Oracle e PostgreSQL, daí utilizei o recurso de Heterogeneous Services da Oracle. Se quiser dar uma olhada está aqui: http://alexsandrohaag.blogspot.com/2010/07/criando-um-database-link-entre-o-oracle.html
Poderia ser feito assim também para o MSSQL ao invés do Postgres. Claro, aqui estou usando uma feature da versão Enterprise do Oracle, mas ela está disponível inclusive no Oracle-XE, podendo ser utilizada para fins de aprendizado e simulação. O conceito é semelhante ao Linked Server, um Database Link entre bancos diferentes.
Dae Alex, conheço essa feature sim, mas na época o Oracle que eu precisava usar não tinha.
Fiz desse forma com os “gratuitos” pois era o que eu precisava em produção.
Como fiz isso em 2007 fiquei curioso para saber se roda até hoje … ehehehe
Abraços
capin
Parabéns pelo artigo, Muito bom mesmo e com certeza vai ajudar muitas pessoas. Alem de enriquecer e muito as pessoas que assim como eu (Iniciando na Vida DBA) com pouca experiencia buscam por todas as formas o conhecimento, e sem duvida Blog´s como esse que costumo chamar de ” Biblioteca Popular ” ou ” bate-papo em roda de amigos “, acabam tirando Dúvida esclarecendo fatos até então obscuros ou de extrema dificuldade para alguns. Bom Realmente é de muito bom gosto esse Blog e seus post´s, agradeço a todos que participaram ajudando a enriquece-lo e repassando conhecimentos tão valiosos.
Claudeir Jose.
Abraço a todos.
Claudeir,
Obrigado. A ideia do Blog é ser justamente esse apoio de quem sofre no dia a dia.
Abraços,
capin
Migrado para o Certificação BD em 08/05/2012 por Capin!
Parabens Capin, este artigo vai salvar a minha vida.
Jose Roberto, espero que te ajude.
Pela data do artigo, se você fizer funcionar isso com essas informações e com outras versões (SQL Server e/ou Oracle) faça um comentário aqui de como foi e se mudou algo, deixe a sua contribuição.
Obrigado.
capin
Muito bom Capin.
Tenho um artigo em meu blog que complementa algumas informações e que eu gostaria de compartilhar: http://www.fabioprado.net/2011/08/exportando-dados-do-ms-sql-server-para.html
[]s
Fábio Prado
http://www.fabioprado.net
Valeu Fabio, comentei no seu post sobre esse aqui.
Só que não ficou como link, blogger é fraco! ehheheeh
abração.
capin
Boa tarde,
Gostaria de saber exatamente, como chamar uma procedure que esta no oracle atraves do sql server com o linked server.
o Linked server eu ja criei e esta ok.
eu preciso é da sintaxe de como chamar a procedure. Algo do tipo assim:
EXEC linkedserver.procedure @parametros , Seria isso? Obrigado!!!
Marcos,
fiz esses testes por volta de 2006/2007, nem teria como testar hoje, mas imagino que deve ser a mesma chamada do banco que tais usando, mas realmente não sei como te ajudar. Caso encontre a resposta, poste aqui!
Abraços,
capin