Esta página proporciona información sobre cómo administrar servidores vinculados en su instancia de Cloud SQL, lo que incluye inscribir una instancia, agregar un servidor vinculado y consultar un servidor vinculado.
Inscriba su instancia para permitir servidores vinculados
Para agregar la bandera de cloudsql enable linked servers
a su instancia, utilice el siguiente comando:
gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on
Reemplace INSTANCE_NAME
con el nombre de la instancia que desea utilizar para vincular servidores.
Para obtener más información, consulte configurar indicadores de base de datos .
Agregar un servidor vinculado
Para agregar un servidor vinculado, ejecute el comando Transact-SQL sp_addlinkedserver
:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID'
Reemplace lo siguiente:
- LINKED_SERVER_NAME con el nombre del servidor vinculado a crear.
- TARGET_SERVER_ID con el nombre de red, el nombre DNS o la dirección IP del servidor vinculado. Para el nombre de la instancia, use el formato
servername\instancename
. Si su instancia usa un puerto no estándar, agregue el número de puerto. Por ejemplo,servername\instancename, 8080
.
Para agregar una asignación de usuario para un usuario que actualmente está conectado, ejecute el siguiente comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'True'
Reemplace LINKED_SERVER_NAME con el nombre del servidor vinculado.
Para crear o actualizar el inicio de sesión y la contraseña remotos predeterminados y aplicarlos a todos los inicios de sesión locales, ejecute el siguiente comando:
EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @useself=N'False', @locallogin=N'LOGIN', @rmtuser=N'USER_ID', @rmtpassword='PASSWORD';
Reemplace lo siguiente:
- LINKED_SERVER_NAME con el nombre del servidor vinculado.
- LOGIN con el nombre de usuario del servidor local.
locallogin
es sysname, con un valor predeterminado de NULL. NULL especifica que esta entrada se aplica a todos los inicios de sesión locales que se conectan armtsrvname
. Si no es NULL,locallogin
es un inicio de sesión de SQL Server o de Windows. Si usa un inicio de sesión de Windows, debe tener acceso a SQL Server, ya sea directamente o a través de su pertenencia a un grupo de Windows con acceso. - USER_ID con el usuario que inicia sesión.
- PASSWORD con la contraseña del usuario.
Agregar un servidor vinculado con una conexión cifrada
Para agregar un servidor vinculado mediante una conexión cifrada, ejecute el comando Transact-SQL sp_addlinkedserver
:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;'
Reemplace lo siguiente:
- LINKED_SERVER_NAME con el nombre del servidor vinculado a crear.
- TARGET_SERVER_ID con el nombre del servidor de destino, o la dirección IP y el número de puerto del servidor de destino.
Si el nombre del servidor es diferente del nombre del certificado, debe indicar que SQL Server puede confiar en el certificado del servidor. Para actualizar la cadena del proveedor, ejecute el siguiente comando:
EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct=N'', @provider=N'SQLNCLI', @datasrc=N'TARGET_SERVER_ID, @provstr=N'Encrypt=yes;TrustServerCertificate=yes;'
Reemplace lo siguiente:
- LINKED_SERVER_NAME con el nombre del servidor vinculado a crear.
- TARGET_SERVER_ID con el nombre del servidor de destino, o la dirección IP y el número de puerto del servidor de destino.
Consultas de servidores vinculados
Cloud SQL admite el uso de nombres de cuatro partes para consultar servidores vinculados (nombre del servidor, nombre de la base de datos, nombre del esquema y nombre del objeto), además de los siguientes comandos:
- OPENQUERY ejecuta una consulta en un servidor especificado.
- EJECUTAR le permite ejecutar SQL dinámico contra un servidor vinculado.
Para obtener más información, consulte Comparar opciones de ejecución remota de consultas .
Habilitar llamadas a procedimientos remotos en un servidor vinculado
Las llamadas a procedimientos remotos (RPC) permiten ejecutar procedimientos almacenados en servidores vinculados. Para añadir RPC, ejecute el comando Transact-SQL sp_serveroption
con un argumento RPC. Hay dos argumentos RPC:
-
rpc
habilita RPC desde el servidor especificado. -
rpc out
habilita RPC al servidor especificado.
Utilice el siguiente comando sp_serveroption
con el argumento rpc
para habilitar RPC desde LINKED_SERVER_NAME :
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc', @optvalue='TRUE'
Reemplace LINKED_SERVER_NAME con el nombre del servidor vinculado.
Utilice el siguiente comando sp_serveroption
con el argumento rpc out
para habilitar RPC:
EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='rpc out', @optvalue='TRUE'
Reemplace LINKED_SERVER_NAME con el nombre del servidor vinculado.
Eliminar la asignación de usuarios para un servidor vinculado
Para eliminar una asignación de usuario que agregó previamente, ejecute el siguiente comando:
EXEC master.dbo.sp_droplinkedsrvlogin @rmtsrvname=N'LINKED_SERVER_NAME', @locallogin=N'LOGIN';
Reemplace lo siguiente:
- LINKED_SERVER_NAME con el nombre del servidor vinculado a eliminar.
- LOGIN con el nombre de usuario del servidor local.
locallogin
es sysname, con un valor predeterminado de NULL. NULL especifica que esta entrada se aplica a todos los inicios de sesión locales que se conectan armtsrvname
. Si no es NULL,locallogin
es un inicio de sesión de SQL Server o de Windows. Si usa un inicio de sesión de Windows, debe tener acceso a SQL Server, ya sea directamente o a través de su pertenencia a un grupo de Windows con acceso.
Eliminar una instancia inscrita para que no permita servidores vinculados
Para eliminar servidores vinculados, haga lo siguiente:
- Elimine los servidores vinculados existentes con el procedimiento almacenado sp_dropserver de Transact-SQL.
Elimine la marca de
cloudsql enable linked servers
para eliminar una instancia inscrita.gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
Reemplace
INSTANCE_NAME
con el nombre de la instancia donde desea eliminar los servidores vinculados.Alternativamente, puede ejecutar el siguiente comando para borrar todos los indicadores de la base de datos:
gcloud sql instances patch INSTANCE_NAME --clear-database-flags
Reemplace
INSTANCE_NAME
con el nombre de la instancia donde desea eliminar los servidores vinculados.
Solucionar problemas
Mensaje de error | Solución de problemas |
---|---|
Msg 7411, Level 16, State 1, Line 25 | La opción DataAccess está deshabilitada. Ejecute el siguiente comando para habilitar el acceso a los datos: EXEC sp_serveroption @server='LINKED_SERVER_NAME', @optname='data access', @optvalue='TRUE' Reemplace LINKED_SERVER_NAME con el nombre del servidor vinculado. |
Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) | Si tiene este problema al establecer una conexión cifrada, debe probar otra forma de proporcionar el ID de usuario al acceder al servidor vinculado. Para ello, ejecute el siguiente comando:EXEC master.dbo.sp_addlinkedserver @server = N'LINKED_SERVER_NAME', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'TARGET_SERVER_ID', @provstr= N'Encrypt=yes;TrustServerCertificate=yes;User ID=USER_ID' Reemplace lo siguiente:
|
¿Qué sigue?
- Obtenga información sobre el uso de servidores vinculados .