Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

Como você configura um servidor vinculado a um banco de dados Oracle no SQL 2000/2005?


Consegui configurar um servidor vinculado a um banco de dados Oracle remoto, o que acabou sendo um processo de várias etapas:
  1. Instale os drivers ODBC do Oracle no SQL Server.
  2. Crie o DSN do sistema para o banco de dados Oracle no SQL Server.
  3. Crie um servidor vinculado no SQL Server usando o DSN do sistema.

Etapa 1:Instale os drivers ODBC do Oracle no servidor

uma. Baixe os pacotes necessários do Oracle Instant Client:Basic, ODBC e SQL*Plus (opcional)

b. Descompacte os pacotes em um diretório local no servidor SQL, normalmente C:\Oracle . Isso deve resultar em um [diretório] como C:\Oracle\instantclient_10_2 , que será o valor de [directory] referenciado no restante desta resposta.

c. Crie um arquivo de texto chamado tnsnames.ora dentro do cliente instantâneo [diretório] que contém o seguinte:
OracleTnsName = 
(
  DESCRIPTION=
  (
    ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
  )
  (
    CONNECT_DATA = (SERVICE_NAME=acc)
  )
)

Observação:HOST real , PORT e SERVICE_NAME variará de acordo com o servidor Oracle ao qual você está estabelecendo uma conexão. Essas informações geralmente podem ser encontradas usando as ferramentas do cliente de rede Oracle em ouvintes .

O OracleTnsName pode ser qualquer nome que você queira atribuir à fonte de dados Oracle e será usado ao configurar o DSN do sistema. Você também pode usar a sintaxe acima para definir vários nomes TNS no mesmo arquivo tnsnames.ora, se desejar.

d. Adicione o [diretório] ao sistema PATH variável de ambiente.

e. Crie uma nova variável de ambiente do sistema chamada TNS_Admin que tem um valor de [diretório]

f. Execute o [directory]\odbc_install.exe utilitário para instalar os drivers ODBC Oracle.

g. É recomendado que você reinicie o servidor SQL, mas pode não ser necessário. Além disso, convém conceder permissões de segurança a esse diretório para as identidades de usuário do SQL Server e do SQL Agent.

Etapa 2:crie um DNS do sistema que use o driver ODBC da Oracle

uma. Abra o Administrador de fonte de dados ODBC ferramenta. [ Ferramentas Administrativas --> Fontes de Dados (ODBC) ]

b. Selecione a guia DSN do sistema e, em seguida, selecione o botão Adicionar.

c. Na lista de drivers, selecione Oracle no instantclient {version} . (por exemplo, 'Oracle no instantclient 10_2') e, em seguida, selecione o botão Concluir.

d. Especifique o seguinte:
  • Data Source Name :{Nome DSN do sistema}
  • Description :{deixe em branco/vazio}
  • TNS Service Name :deve ter o OracleTnsName você definiu no tnsnames.ora arquivo listado, selecione-o como o valor.
  • ID do usuário :{nome de usuário Oracle}

e. Selecione o botão Testar Conexão. Você deve ser solicitado a fornecer a {senha do usuário Oracle}. Se tudo correr bem, o teste será bem-sucedido.

Etapa 3:criar servidor vinculado em SQL ao banco de dados Oracle

Abra uma janela de consulta no servidor SQL e execute o seguinte:
EXEC sp_addlinkedserver 
     @server        = '{Linked Server Name}'
    ,@srvproduct    = '{System DSN Name}'
    ,@provider      = 'MSDASQL'
    ,@datasrc       = '{System DSN Name}'

EXEC sp_addlinkedsrvlogin 
     @rmtsrvname    = '{Linked Server Name}'
    ,@useself       = 'False'
    ,@locallogin    = NULL
    ,@rmtuser       = '{Oracle User Name}'
    ,@rmtpassword   = '{Oracle User Password}'

Observação:o {Linked Server Name} pode ser qualquer coisa que você queira usar ao fazer referência ao servidor Oracle, mas o {System DNS Name} deve corresponder ao nome do DSN do sistema que você criou anteriormente.

O {Oracle User Name} deve ser o mesmo que o ID do usuário usado pelo DSN do sistema e o {Oracle User Password} deve ser o mesmo que você usou para testar com êxito a conexão ODBC. Consulte KB 280106 para obter informações sobre como solucionar problemas do servidor vinculado Oracle.

Consultando o servidor vinculado Oracle

Você pode usar OPENQUERY para executar consultas de passagem no servidor vinculado do Oracle, mas esteja ciente de que para conjuntos de registros muito grandes você pode receber um ORA-01652 mensagem de erro se você especificar um ORDER BY cláusula na consulta de passagem. Movendo o ORDER BY cláusula da consulta de passagem para a instrução de seleção externa resolveu esse problema para mim.