Pude configurar un servidor vinculado a una base de datos remota de Oracle, que terminó siendo un proceso de varios pasos:
- Instale los controladores ODBC de Oracle en SQL Server.
- Cree el DSN del sistema para la base de datos de Oracle en SQL Server.
- Cree un servidor vinculado en el servidor SQL utilizando System DSN.
Paso 1:Instale los controladores ODBC de Oracle en el servidor
una. Descargue los paquetes necesarios de Oracle Instant Client:Basic, ODBC y SQL*Plus (opcional)
b. Descomprima los paquetes en un directorio local en el servidor SQL, normalmente C:\Oracle
. Esto debería resultar en un [directorio] como C:\Oracle\instantclient_10_2
, que será el valor de [directorio] al que se hace referencia en el resto de esta respuesta.
C. Cree un archivo de texto llamado tnsnames.ora
dentro del cliente instantáneo [directorio] que contiene lo siguiente:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
Nota:HOST
real , PORT
y SERVICE_NAME
variará según el servidor de Oracle al que esté estableciendo una conexión. Esta información a menudo se puede encontrar utilizando las herramientas de cliente de red de Oracle en oyentes .
El OracleTnsName
puede ser cualquier nombre que desee asignar a la fuente de datos de Oracle y se utilizará al configurar el DSN del sistema. También puede usar la sintaxis anterior para definir múltiples nombres TNS en el mismo archivo tnsnames.ora si lo desea.
d. Agregue el [directorio] al sistema PATH
variable de entorno.
mi. Cree una nueva variable de entorno del sistema llamada TNS_Admin
que tiene un valor de [directorio]
F. Ejecute el [directory]\odbc_install.exe
utilidad para instalar los controladores ODBC de Oracle.
gramo. Se recomienda que reinicie el servidor SQL, pero puede que no sea necesario. Además, es posible que desee otorgar permisos de seguridad a este directorio para las identidades de usuario del servidor SQL y del agente SQL.
Paso 2:Cree un sistema DNS que utilice el controlador ODBC de Oracle
una. Abra el Administrador de fuente de datos ODBC herramienta. [ Herramientas administrativas --> Orígenes de datos (ODBC) ]
b. Seleccione la pestaña DSN del sistema y luego seleccione el botón Agregar.
C. En la lista de controladores, seleccione Oracle en instantclient {version} . (por ejemplo, 'Oracle en instantclient 10_2') y luego seleccione el botón Finalizar.
d. Especifique lo siguiente:
Data Source Name
:{Nombre DSN del sistema}Description
:{dejar en blanco/vacío}TNS Service Name
:debe tener elOracleTnsName
definió entnsnames.ora
archivo de la lista, selecciónelo como el valor.- ID de usuario :{nombre de usuario de Oracle}
mi. Seleccione el botón Probar conexión. Se le pedirá que proporcione la {contraseña de usuario de Oracle}. Si todo va bien, la prueba tendrá éxito.
Paso 3:Crear un servidor vinculado en SQL a la base de datos de Oracle
Abra una ventana de consulta en el servidor SQL y ejecute lo siguiente:
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}'
Nota:El {Linked Server Name}
puede ser cualquier cosa que desee usar al hacer referencia al servidor de Oracle, pero el {System DNS Name}
debe coincida con el nombre del DSN del sistema que creó anteriormente.
El {Oracle User Name}
debe ser el mismo que el ID de usuario utilizado por el DSN del sistema y el {Oracle User Password}
debe ser el mismo que usó para probar con éxito la conexión ODBC. Consulte KB 280106 para obtener información sobre la solución de problemas del servidor vinculado de Oracle.
Consultar el servidor vinculado de Oracle
Puede usar OPENQUERY para ejecutar consultas de transferencia en el servidor vinculado de Oracle, pero tenga en cuenta que para conjuntos de registros muy grandes puede recibir un ORA-01652
mensaje de error si especifica un ORDER BY
cláusula en la consulta de paso a través. Moviendo el ORDER BY
La cláusula de la consulta de transferencia a la declaración de selección externa resolvió este problema para mí.