¿Cómo creo un servidor vinculado en RDS para SQL Server con RDS como origen?
Quiero crear un servidor vinculado desde una instancia de Amazon Relational Database Service (Amazon RDS) para Microsoft SQL Server a SQL Server. ¿Cómo puedo hacerlo?
Descripción corta
Amazon RDS es un servicio administrado, por lo que los usuarios no tienen acceso al administrador de sistemas. La creación directa de un servidor vinculado desde una GUI produce un error. Para crear un servidor vinculado, utilice T-SQL. Los únicos destinos admitidos son SQL Server.
Requisitos previos
Debe haber conectividad entre RDS para SQL Server y el SQL Server de destino.
Nota: La contraseña y la configuración del servidor vinculado permanecen intactas incluso después de reemplazar el host.
Resolución
De una instancia de RDS para SQL Server a una instancia de RDS para SQL Server
Se recomienda utilizar el nombre de DNS al crear un servidor vinculado con RDS para SQL Server como origen y RDS para SQL Server como destino. El uso del nombre de DNS evita cambios en la dirección IP debidos a reemplazos de hosts o cambios en el servidor.
En Amazon RDS, las direcciones IP son dinámicas y los puntos de conexión estáticos. Por lo tanto, es una práctica recomendada utilizar puntos de conexión para conectarse a la instancia. Cada instancia de Amazon RDS tiene un punto de conexión.
Parámetros:
- @server: el nombre de su servidor vinculado.
- @datasrc: el nombre de su punto de conexión de RDS. Para la instancia local de Amazon Elastic Compute Cloud (Amazon EC2), su dirección IP o nombre de DNS local de EC2.
- @rmtuser: el nombre de inicio de sesión que tiene acceso a la base de datos de destino.
- @rmtpassword: la contraseña del nombre de inicio de sesión.
Paso 1: Conectarse a la instancia de RDS para SQL Server
Conéctese a la instancia mediante el inicio de sesión maestro y, a continuación, ejecute el siguiente comando. Asegúrese de utilizar el punto de conexión y no la dirección IP. Las direcciones IP de las instancias de RDS pueden cambiar durante el reemplazo de un host.
EXEC master .dbo.sp_addlinkedserver @server = N'LinkedServerRDSSQL', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'SQL-2019.ckeixtynaaaj.us-east-1.rds.amazonaws.com' go EXEC master .dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LinkedServerRDSSQL' ,@useself=N'False' ,@locallogin=NULL,@rmtuser =N'linkedserverloginname',@rmtpassword='YourStrongPassword' go
Paso 2: Probar el servidor vinculado
1. En Microsoft SQL Server Management Studio (SSMS), conéctese a la instancia de RDS.
2. En el menú View (Ver), seleccione Object Explorer (Explorador de objetos).
3. Seleccione Server Objects (Objetos de servidor), Linked Servers (Servidores vinculados).
4. Haga clic con el botón derecho en el nombre del servidor y seleccione Test the connection (Probar la conexión).
Paso 3: Consultar el servidor vinculado
Ejecute la siguiente consulta:
select * from [LinkedServerName].[Databasename].[schemaname].[tablename]
De una instancia de RDS para SQL Server a una instancia de EC2 de SQL Server o a un SQL Server local
Paso 1: Crear el servidor vinculado
Cree el servidor vinculado con RDS para SQL Server como origen para SQL Server en una instancia de EC2 o de un SQL Server local.
Ejecute los siguientes comandos para crear el servidor vinculado con la dirección IP del servidor remoto:
EXEC master .dbo.sp_addlinkedserver @server = N'LinkedServerRDSSQL', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'10.0.0.152' Go EXEC master .dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LinkedServerRDSSQL' ,@useself=N'False' ,@locallogin=NULL,@rmtuser =N'linkedserverloginname',@rmtpassword='YourStrongPassword' Go
Ejecute los siguientes comandos para crear el servidor vinculado con el nombre de DNS del servidor remoto:
EXEC master .dbo.sp_addlinkedserver @server = N'LinkedServerRDSSQL', @srvproduct= N'', @provider= N'SQLNCLI', @datasrc= N'ServerName.datacenter.mycompany.com' Go EXEC master .dbo.sp_addlinkedsrvlogin @rmtsrvname=N'LinkedServerRDSSQL' ,@useself=N'False' ,@locallogin=NULL,@rmtuser =N'linkedserverloginname',@rmtpassword='YourStrongPassword' go
Paso 2: Probar el servidor vinculado
1. En Microsoft SQL Server Management Studio (SSMS), conéctese a la instancia de RDS.
2. En el menú View (Ver), seleccione Object Explorer (Explorador de objetos).
3. Seleccione Server Objects (Objetos de servidor), Linked Servers (Servidores vinculados).
4. Haga clic con el botón derecho en el nombre del servidor y seleccione Test the connection (Probar la conexión).
Paso 3: Consultar el servidor vinculado
Ejecute la siguiente consulta:
select * from [LinkedServerName].[Databasename].[schemaname].[tablename]
Configure el servidor vinculado mediante la autenticación de Microsoft Windows
Nota: No se admite la configuración de un servidor vinculado desde RDS para SQL Server a una instancia de EC2 o a un SQL Server local mediante la autenticación de Windows.
Requisitos previos
- Debe haber creado el dominio y unirse al Microsoft AD administrado por AWS.
- La instancia SQL Server en EC2 de origen y la instancia de SQL Server de RDS de destino deben tener conectividad.
Paso 1: Configure el servidor vinculado desde un EC2 o SQL Server local a RDS para SQL Server mediante la autenticación de Windows
1. Inicie sesión con el nombre de usuario de su dominio y ejecute la siguiente consulta para crear el servidor vinculado.
USE [master] GO EXEC sp_addlinkedserver @server=N'LinkedServerToRDSInstance',@srvproduct=N'',@provider=N'SQLNCLI',@datasrc=N'EndpointName'; GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LinkedServerToRDSInstance', @locallogin = NULL , @useself = N'True' GO
Paso 2: Probar el servidor vinculado
1. En Microsoft SQL Server Management Studio (SSMS), conéctese a la instancia de RDS.
2. En el menú View (Ver), seleccione Object Explorer (Explorador de objetos).
3. Seleccione Server Objects (Objetos de servidor), Linked Servers (Servidores vinculados).
4. Haga clic con el botón derecho en el nombre del servidor y, a continuación, seleccione Test the connection (Probar la conexión).
Paso 3: Consultar el servidor vinculado
Ejecute la siguiente consulta:
select * from [LinkedServerName].[Databasename].[schemaname].[tablename]
Solución de problemas
Es posible que reciba el siguiente mensaje de error al conectarse desde el cliente:
Msg 18456, Level 14, State 1, Line 21 Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'
Este error se debe a un “doble salto”. Se produce un doble salto cuando un equipo se conecta a otro equipo para conectarse a un tercer equipo. Se pueden producir dobles saltos en los siguientes escenarios:
- No existe una configuración de nombre principal de servicio (SPN) para que AWS Managed AD procese la autenticación entre el cliente y la instancia de EC2.
- El servidor vinculado se configura mediante un punto de conexión que no es de su dominio, como el punto de conexión de la instancia de RDS. El método de autenticación tanto para EC2 como para RDS debe ser KERBEROS.
Para resolver este problema, lleve a cabo las siguientes acciones:
Paso 1. Compruebe el método de autenticación para confirmar que se está eligiendo KERBEROS al conectarse tanto a RDS como a EC2.
Ejecute la siguiente consulta mediante el inicio de sesión del dominio desde el cliente:
select @@servername as ServerName, session_id,net_transport, auth_scheme from sys.dm_exec_connections where session_id= @@spid;
Paso 2: Corrija los SPN de la cuenta de servicio de SQL Server que forma parte de su dominio
1. En Users and Computers (Usuarios y computadoras) de Active Directory, seleccione YourDomain.com, (Su dominio.com) YourDomain (Su dominio), Users (Usuarios).
2. Haga clic con el botón derecho en YourServiceAccount (Su cuenta de servicio) para ver las propiedades.
3. En la pestaña Delegation (Delegación), elija Trust this user for delegation to any service (Kerberos only) (Confiar en este usuario para la delegación en cualquier servicio [solo Kerberos]) y, a continuación, seleccione OK (Aceptar).
4. Reinicie el servicio de SQL Server en la instancia de EC2 o en el SQL Server local.
5. Agregue el SPN para la cuenta de servicio como se muestra en el siguiente comando de ejemplo. Sustituya los valores de YourDomainName\ServiceAccountName (nombredesudominio\nombredecuentadeservicio) y el dominio EC2name (EC2nombre) por los valores correctos para su dominio.
setspn -A MSSQLSvc/Ec2name.domain.com YourDomainName\ServiceAccountName setspn -A MSSQLSvc/Ec2name.domain.com:1433 YourDomainName\ServiceAccountName
6. Ejecute el siguiente comando para verificar los SPN recién creados:
setspn -l YourDomainName\ServiceAccountName
Paso 3: Vuelva a crear el servidor vinculado mediante el punto de conexión YourDomain.com de RDS
1. Ejecute la siguiente consulta en RDS para SQL Server para recuperar el nombre del servidor:
select @@servername as ServerName, session_id,net_transport, auth_scheme from sys.dm_exec_connections where session_id= @@spid;
2. En el resultado del comando anterior, compruebe la columna server name (nombre del servidor) para comprobar el SPN, como se muestra en el siguiente ejemplo.
setspn -l YourServerName
El resultado del comando anterior también muestra los valores de ServicePrincipalNames (nombres principales de servicio) registrados para la instancia de RDS, como se muestra en el siguiente ejemplo:
MSSQLSvc/ YourServerName.yourdomainname.com:1433
3. Ejecute el siguiente comando para volver a crear el servidor vinculado mediante el inicio de sesión del dominio. El origen de datos es el misma que se obtuvo del resultado del comando en el paso 2.
USE [master] GO EXEC sp_addlinkedserver @server=N'LinkedServerToRDSInstance',@srvproduct=N'',@provider=N'SQLNCLI',@datasrc=N'YourServerName.YourDomainnanme,com'; GO EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname = N'LinkedServerToRDSInstance', @locallogin = NULL , @useself = N'True' GO
4. Pruebe la conectividad del cliente.
Nota: Actualmente, se admite un servidor vinculado como destino para SQL Server. Esto se debe a que Amazon RDS es un servicio administrado. No tiene acceso al sistema operativo para instalar controladores ODBC adicionales ni ninguno de los controladores necesarios para conectar diferentes servidores de bases de datos, como Oracle, MYSQL o PostgreSQL.
Para servidores vinculados heterogéneos, puede usar RDS Custom para SQL Server.
Información relacionada
Implement linked servers with Amazon RDS for Microsoft SQL Server (Implementar servidores vinculados con Amazon RDS para Microsoft SQL Server)

Contenido relevante
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace 8 meses
- OFICIAL DE AWSActualizada hace 7 meses
- OFICIAL DE AWSActualizada hace 8 meses