Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se muestra cómo crear un servidor vinculado y obtener acceso a datos desde otro servidor SQL Server mediante SQL Server Management Studio o Transact-SQL. Al crear un servidor vinculado, puede trabajar con datos de varios orígenes. El servidor vinculado no tiene que ser otra instancia de SQL Server, pero es un escenario común.
Contexto
Un servidor vinculado permite el acceso a consultas distribuidas y heterogéneas en orígenes de datos OLE DB. Después de crear un servidor vinculado, las consultas distribuidas se pueden ejecutar en este servidor y las consultas pueden combinar tablas desde más de un origen de datos. Si el servidor vinculado se define como una instancia de SQL Server, se pueden ejecutar procedimientos almacenados remotos.
Las funcionalidades y los argumentos necesarios del servidor vinculado pueden variar significativamente. Los ejemplos de este tema proporcionan un ejemplo típico, pero no se describen todas las opciones. Para obtener más información, vea sp_addlinkedserver (Transact-SQL).
Seguridad
Permisos
Al usar instrucciones Transact-SQL, necesita tener permiso ALTER ANY LINKED SERVER
en el servidor o ser miembro del rol fijo de servidor setupadmin. Para usar Management Studio se requiere CONTROL SERVER
permiso o pertenencia al rol fijo de servidor sysadmin.
Cómo crear un servidor vinculado
Puede usar cualquiera de las siguientes opciones:
Uso de SQL Server Management Studio
Para crear un servidor vinculado a otra instancia de SQL Server mediante SQL Server Management Studio
En SQL Server Management Studio, abra el Explorador de objetos, expanda Objetos de servidor, haga clic con el botón derecho en Servidores vinculados y, a continuación, haga clic en Nuevo servidor vinculado.
En la página General , en el cuadro Servidor vinculado , escriba el nombre de la instancia de SQL Server a la que se vincula.
SQL Server
Identifique el servidor vinculado como una instancia de MicrosoftSQL Server. Si usa este método para definir un servidor vinculado de SQL Server, el nombre especificado en El servidor vinculado debe ser el nombre de red del servidor. Además, las tablas recuperadas del servidor proceden de la base de datos predeterminada definida para el inicio de sesión en el servidor vinculado.Otro origen de datos
Especifique un tipo de servidor OLE DB distinto de SQL Server. Al hacer clic en esta opción, se activan las opciones debajo.proveedor
Seleccione un origen de datos OLE DB en el cuadro de lista. El proveedor OLE DB se registra con el PROGID especificado en el Registro.Nombre del producto
Escriba el nombre del producto del origen de datos OLE DB que se va a agregar como servidor vinculado.Origen de datos
Escriba el nombre del origen de datos como lo interpreta el proveedor OLE DB. Si se conecta a una instancia de SQL Server, proporcione el nombre de la instancia.Cadena de proveedor
Escriba el identificador de programación único (PROGID) del proveedor OLE DB que corresponde al origen de datos. Para obtener ejemplos de cadenas de proveedor válidas, consulte sp_addlinkedserver (Transact-SQL).Ubicación
Escriba la ubicación de la base de datos tal como la interpreta el proveedor OLE DB.Catálogo
Escriba el nombre del catálogo que se va a usar al realizar una conexión con el proveedor OLE DB.Para probar la capacidad de conectarse a un servidor vinculado, en el Explorador de objetos, haga clic con el botón derecho en el servidor vinculado y, a continuación, haga clic en Probar conexión.
Nota:
Si la instancia de SQL Server es la instancia predeterminada, escriba el nombre del equipo que hospeda la instancia de SQL Server. Si SQL Server es una instancia con nombre, escriba el nombre del equipo y el nombre de la instancia, como Accounting\SQLExpress.
En el área Tipo de servidor, seleccione SQL Server para indicar que el servidor vinculado es otra instancia de SQL Server.
En la página Seguridad , especifique el contexto de seguridad que se usará cuando el servidor SQL Server original se conecte al servidor vinculado. En un entorno de dominio en el que los usuarios se conectan mediante sus inicios de sesión de dominio, seleccionar Hacerlo usando el contexto de seguridad actual del inicio de sesión suele ser la mejor opción. Cuando los usuarios se conectan al servidor SQL Server original mediante un inicio de sesión de SQL Server , la mejor opción suele ser seleccionar Mediante este contexto de seguridad y, a continuación, proporcionar las credenciales necesarias para autenticarse en el servidor vinculado.
Inicio de sesión local
Especifique el inicio de sesión local que puede conectarse al servidor vinculado. El inicio de sesión local puede ser un inicio de sesión mediante la autenticación de SQL Server o un inicio de sesión de autenticación de Windows. Use esta lista para restringir la conexión a inicios de sesión específicos o para permitir que algunos inicios de sesión se conecten como un inicio de sesión diferente.Suplantar
Pase el nombre de usuario y la contraseña del inicio de sesión local al servidor vinculado. Para la autenticación de SQL Server, debe existir un inicio de sesión con el mismo nombre y contraseña exactamente en el servidor remoto. Para los inicios de sesión de Windows, el inicio de sesión debe ser un inicio de sesión válido en el servidor vinculado.Para usar la suplantación, la configuración debe cumplir el requisito de delegación.
Usuario remoto
Utilice el usuario remoto para asignar usuarios no definidos en Inicio de sesión local. El usuario remoto debe ser un inicio de sesión de autenticación de SQL Server en el servidor remoto.Contraseña remota
Especifique la contraseña del usuario remoto.Agregar
Agregue un nuevo inicio de sesión local.Eliminar
Quite un inicio de sesión local existente.No se debe hacer
Especifique que no se realizará una conexión para los inicios de sesión no definidos en la lista.Se realiza sin usar un contexto de seguridad
Especifique que se realizará una conexión sin usar un contexto de seguridad para los inicios de sesión no definidos en la lista.Se realizará utilizando el contexto de seguridad actual del inicio de sesión
Especifique que se realizará una conexión mediante el contexto de seguridad actual del inicio de sesión para los inicios de sesión no definidos en la lista. Si está conectado al servidor local mediante la autenticación de Windows, las credenciales de Windows se usarán para conectarse al servidor remoto. Si está conectado al servidor local mediante la autenticación de SQL Server, se usará el nombre de inicio de sesión y la contraseña para conectarse al servidor remoto. En este caso, debe existir un inicio de sesión con el mismo nombre y contraseña exactamente en el servidor remoto.Se debe realizar utilizando este contexto de seguridad
Especifique que se realizará una conexión con el inicio de sesión y la contraseña especificados en los cuadros Inicio de sesión remoto y Con contraseña para los inicios de sesión no definidos en la lista. El inicio de sesión remoto debe ser un inicio de sesión de autenticación de SQL Server en el servidor remoto.Opcionalmente, para ver o especificar opciones de servidor, haga clic en la página Opciones del servidor.
Compatibilidad de intercalación
Afecta a la ejecución de consultas distribuidas en servidores vinculados. Si esta opción se establece en *true*, SQL Server asume que todos los caracteres del servidor vinculado son compatibles con el servidor local, en cuanto al juego de caracteres y la secuencia de intercalación (o criterio de ordenación). Esto permite a SQL Server enviar comparaciones en columnas de caracteres al proveedor. Si no se establece esta opción, SQL Server siempre evalúa las comparaciones en columnas de caracteres localmente.Esta opción solo debe establecerse si está seguro de que el origen de datos correspondiente al servidor vinculado tiene el mismo juego de caracteres y criterio de ordenación que el servidor local.
Acceso a datos
Habilita y deshabilita un servidor vinculado para el acceso a consultas distribuidas.RPC
Habilita RPC desde el servidor especificado.RPC desconectado
Habilita RPC en el servidor especificado.Usar intercalación remota
Determina si se usará la intercalación de una columna remota o la de un servidor local.Si es verdadero, la intercalación de columnas remotas se usa para orígenes de datos de SQL Server y la intercalación especificada en el nombre de intercalación se usa para orígenes de datos distintos de SQL Server.
Si es falso, las consultas distribuidas siempre usarán la intercalación predeterminada del servidor local, mientras que el nombre de la intercalación y la intercalación de las columnas remotas se ignorarán. El valor predeterminado es false.
Nombre de clasificación
Especifica el nombre de la intercalación utilizada por el origen de datos remoto si el uso de la intercalación remota es verdadero y el origen de datos no es un origen de datos de SQL Server. El nombre debe ser una de las intercalaciones admitidas por SQL Server.Use esta opción al acceder a un origen de datos OLE DB distinto de SQL Server, pero cuya intercalación coincide con una de las intercalaciones de SQL Server.
El servidor vinculado debe admitir una sola intercalación de caracteres para usar en todas las columnas de ese servidor. No establezca esta opción si el servidor vinculado admite varias intercalaciones dentro de un único origen de datos o si la intercalación del servidor vinculado no se puede determinar para que coincida con una de las intercalaciones de SQL Server.
Tiempo de espera de la conexión
Valor de tiempo de espera en segundos para conectarse a un servidor vinculado.Si es 0, utilice el valor predeterminado de sp_configure de la opción tiempo de espera de inicio de sesión remoto.
Tiempo de espera de consulta
Valor de tiempo de espera en segundos para las consultas en un servidor vinculado.Si es 0, use el valor predeterminado de sp_configure para la opción tiempo de espera de consulta remota.
Habilitar la promoción de transacciones distribuidas
Use esta opción para proteger las acciones de un procedimiento de servidor a servidor mediante una transacción del Coordinador de transacciones distribuidas de Microsoft (MS DTC). Cuando esta opción es TRUE, la llamada a un procedimiento almacenado remoto inicia una transacción distribuida e inscribe la transacción con MS DTC. Para obtener más información, vea sp_serveroption (Transact-SQL).Haz clic en Aceptar.
Para ver las opciones del proveedor
Para ver las opciones que el proveedor pone a disposición, haga clic en la página Opciones de proveedores .
Todos los proveedores no tienen las mismas opciones disponibles. Por ejemplo, algunos tipos de datos tienen índices disponibles y es posible que algunos no. Use este cuadro de diálogo para ayudar a SQL Server a comprender las funcionalidades del proveedor. SQL Server instala algunos proveedores de datos comunes, pero cuando el producto proporciona los cambios de datos, es posible que el proveedor instalado por SQL Server no admita todas las características más recientes. La mejor fuente de información sobre las funcionalidades del producto que proporciona los datos es la documentación de ese producto.
Parámetro dinámico
Indica que el proveedor permite la sintaxis de marcador de parámetros "?" para las consultas con parámetros. Establezca esta opción solo si el proveedor admite la interfaz ICommandWithParameters y admite "?", como marcador de parámetro. Establecer esta opción permite a SQL Server ejecutar consultas con parámetros en el proveedor. La capacidad de ejecutar consultas con parámetros en el proveedor puede dar lugar a un mejor rendimiento para determinadas consultas.Consultas anidadas
Indica que el proveedor permite instrucciones anidadasSELECT
en la cláusula FROM. Establecer esta opción permite a SQL Server delegar determinadas consultas en el proveedor que requieren anidar sentencias SELECT en la cláusula FROM.Solo nivel cero
Solo se invocan en el proveedor las interfaces OLE DB de nivel 0.Permitir inprocess
SQL Server permite crear instancias del proveedor como servidor en proceso. Cuando no se establece esta opción, el comportamiento predeterminado consiste en crear instancias del proveedor fuera del proceso de SQL Server. La creación de instancias del proveedor fuera del proceso de SQL Server protege el proceso de SQL Server frente a errores del proveedor. Cuando se crea una instancia del proveedor fuera del proceso de SQL Server, no se permiten actualizaciones o inserciones que hacen referencia a columnas largas (text
,ntext
oimage
).Actualizaciones no transaccionadas
SQL Server permite actualizaciones, incluso si ITransactionLocal no está disponible. Si esta opción está habilitada, las actualizaciones del proveedor no se pueden recuperar, ya que el proveedor no admite transacciones.Índice como ruta de acceso
SQL Server intenta usar índices del proveedor para capturar datos. De forma predeterminada, los índices solo se usan para los metadatos y nunca se abren.No permitir el acceso ad hoc
SQL Server no permite el acceso ad hoc a través de las funciones OPENROWSET y OPENDATASOURCE contra el proveedor OLE DB. Cuando no se establece esta opción, SQL Server tampoco permite el acceso ad hoc.Admite el operador "Like"
Indica que el proveedor admite consultas mediante la palabra clave LIKE.
Uso de Transact-SQL
Para crear un servidor vinculado mediante Transact-SQL, use las instrucciones sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL) y sp_addlinkedsrvlogin (Transact-SQL).
Para crear un servidor vinculado a otra instancia de SQL Server mediante Transact-SQL
En el Editor de consultas, escriba el siguiente comando Transact-SQL para vincular a una instancia de SQL Server denominada
SRVR002\ACCTG
:USE [master] GO EXEC master.dbo.sp_addlinkedserver @server = N'SRVR002\ACCTG', @srvproduct=N'SQL Server' ; GO
Ejecute el código siguiente para configurar el servidor vinculado para usar las credenciales de dominio del inicio de sesión que usa el servidor vinculado.
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'SRVR002\ACCTG', @locallogin = NULL , @useself = N'True' ; GO
Seguimiento: Pasos que se deben seguir después de crear un servidor vinculado
Para probar el servidor vinculado
Ejecute el código siguiente para probar la conexión con el servidor vinculado. En este ejemplo se devuelven los nombres de las bases de datos del servidor vinculado.
SELECT name FROM [SRVR002\ACCTG].master.sys.databases ; GO
Escritura de una consulta que combina tablas desde un servidor vinculado
Use nombres de cuatro partes para hacer referencia a un objeto en un servidor vinculado. Ejecute el código siguiente para devolver una lista de todos los inicios de sesión en el servidor local y sus inicios de sesión coincidentes en el servidor vinculado.
SELECT local.name AS LocalLogins, linked.name AS LinkedLogins FROM master.sys.server_principals AS local LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked ON local.name = linked.name ; GO
Cuando se devuelve NULL para el inicio de sesión del servidor vinculado, indica que el inicio de sesión no existe en el servidor vinculado. Estos inicios de sesión no podrán usar el servidor vinculado a menos que el servidor vinculado esté configurado para pasar un contexto de seguridad diferente o el servidor vinculado acepte conexiones anónimas.
Véase también
Servidores vinculados (motor de base de datos)
sp_addlinkedserver (Transact-SQL)
sp_serveroption (Transact-SQL)