los - servidores vinculados sql server
¿Cómo se configura un servidor vinculado a una base de datos Oracle en SQL 2000/2005? (2)
Yo tuve el mismo problema. Estuve hablando por teléfono con Microsoft por horas, y no tenían una solución. Ninguno de esos ajustes de "tiempo de espera de conexión" me ayudó.
Para resolverlo, creé un trabajo DTS que ejecuta un proceso que solo actualiza la hora en una fila, en una columna, cada dos minutos. Luego configuro una replicación entre SQL Server y Oracle, programada para replicar ese cambio de célula única, de SQL a Oracle, cada 3 minutos. ¡Mantiene viva la conexión!
Puedo crear y ejecutar un paquete DTS que copie tablas desde una base de datos remota de Oracle a un servidor SQL local, pero quiero configurar la conexión a la base de datos Oracle como un servidor vinculado.
El paquete DTS actualmente utiliza el proveedor Microsoft OLE DB para Oracle con las siguientes propiedades:
- Origen de datos:
SERVER=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=acc)));uid=*UserName*;pwd=*UserPassword*;
- Contraseña: Contraseña del usuario
- ID de usuario: nombre de usuario
- Permitir guardar contraseña: verdadero
¿Cómo hago para establecer un servidor vinculado a una base de datos Oracle utilizando la fuente de datos definida anteriormente?
Pude configurar un servidor vinculado a una base de datos Oracle remota, que terminó siendo un proceso de varios pasos:
- Instale los controladores ODBC de Oracle en SQL Server.
- Crear un DSN de sistema en la base de datos de Oracle en SQL Server.
- Cree el servidor vinculado en el servidor SQL usando el DSN del sistema.
Paso 1: Instalar los controladores ODBC de Oracle en el servidor
a. Descargue los paquetes Oracle Instant Client necesarios: Basic, ODBC y SQL * Plus (opcional)
segundo. Descomprima los paquetes en un directorio local en el servidor SQL, generalmente C:/Oracle
. Esto debería dar como resultado 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.
do. Cree un archivo de texto denominado tnsnames.ora
dentro del [directorio] cliente instantáneo que contenga lo siguiente:
OracleTnsName =
(
DESCRIPTION=
(
ADDRESS = (PROTOCOL=TCP)(HOST=10.1.3.42)(PORT=1521)
)
(
CONNECT_DATA = (SERVICE_NAME=acc)
)
)
Nota: HOST
, PORT
y SERVICE_NAME
reales variarán 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 bajo los oyentes .
OracleTnsName
puede ser cualquier nombre que desee asignar a la fuente de datos de Oracle, y se usará al configurar el DSN del sistema. También puede usar la sintaxis anterior para definir múltiples nombres de TNS en el mismo archivo tnsnames.ora si lo desea.
re. Agregue el [directorio] a la PATH
entorno PATH
del sistema.
mi. Cree una nueva variable de entorno del sistema llamada TNS_Admin
que tenga un valor de [directorio]
F. Ejecute la utilidad [directory]/odbc_install.exe
para instalar los controladores ODBC de Oracle.
gramo. Se recomienda reiniciar el servidor SQL, pero puede que no sea necesario. Además, es posible que desee otorgar permisos de seguridad a este directorio para el servidor SQL y las identidades de usuario del agente SQL.
Paso 2: cree un DNS del sistema que use el controlador ODBC de Oracle
a. Abra la herramienta Administrador de orígenes de datos ODBC . [Herramientas administrativas -> Fuentes de datos (ODBC)]
segundo. Seleccione la pestaña DSN del sistema y luego seleccione el botón Agregar.
do. En la lista de controladores, seleccione Oracle en el cliente instantáneo {versión} . (por ejemplo, ''Oracle en el cliente instantáneo 10_2'') y luego seleccione el botón Finalizar.
re. Especifique lo siguiente:
-
Data Source Name
: {nombre de DSN del sistema} -
Description
: {dejar en blanco / vacío} -
TNS Service Name
: debe tener el nombreOracleTnsName
que definió en el archivotnsnames.ora
en la lista, selecciónelo como 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 servidor vinculado en SQL a la base de datos 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 utilizar al hacer referencia al servidor Oracle, pero el {System DNS Name}
debe coincidir 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 la {Oracle User Password}
debe ser la misma que la utilizada para probar con éxito la conexión ODBC. Consulte KB 280106 para obtener información sobre la resolución de problemas del servidor vinculado de Oracle.
Consultando el servidor vinculado de Oracle
Puede usar OPENQUERY para ejecutar consultas de paso a través en el servidor vinculado de Oracle, pero tenga en cuenta que para registros muy grandes puede recibir un mensaje de error ORA-01652
si especifica una cláusula ORDER BY
en la consulta de paso a través. Mover la cláusula ORDER BY
de la consulta de paso a destino a la declaración de selección externa resolvió este problema para mí.