Wie erstelle ich einen verbundenen Server in RDS für SQL Server mit RDS als Quelle?

Letzte Aktualisierung: 03.10.2022

Ich möchte einen verbundenen Server von einer Server-Instance von Amazon Relational Database Service (Amazon RDS) für Microsoft SQL zu SQL Server erstellen. Wie kann ich vorgehen?

Kurzbeschreibung

Amazon RDS ist ein verwalteter Service, sodass Benutzer keinen Systemadministrationszugriff haben. Das direkte Erstellen eines verknüpften Servers über eine GUI führt zu einem Fehler. Verwenden Sie T-SQL, um einen verbundenen Server zu erstellen. Die einzigen unterstützten Ziele sind SQL Server.

Voraussetzungen

Sie müssen über Konnektivität zwischen RDS für SQL Server und dem Ziel-SQL-Server verfügen.

Hinweis: Das Passwort und die Konfiguration des verbundenen Servers bleiben auch nach einem Host-Austausch erhalten.

Auflösung

Instance von RDS für SQL Server zur Instance von RDS für SQL Server

Es ist eine bewährte Methode, den DNS-Namen beim Erstellen eines verbundenen Servers mit RDS für SQL Server als Quelle für RDS für SQL Server als Ziel zu verwenden. Durch die Verwendung des DNS-Namens werden Änderungen der IP-Adresse aufgrund von Hostersetzungen oder Serveränderungen verhindert.

In Amazon RDS sind IP-Adressen dynamisch und Endpunkte statisch. Daher ist es eine bewährte Methode, Endpunkte zu verwenden, um eine Verbindung zu Ihrer Instance herzustellen. Jede Amazon-RDS-Instance hat einen Endpunkt.

Parameter:

  • @server: Der Name Ihres verbundenen Servers.
  • @datasrc: Ihr RDS-Endpunktname. Für die Amazon Elastic Compute Cloud (Amazon EC2)-On-Premises-Instance Ihre On-Premises-EC2-IP-Adresse oder Ihr DNS-Name.
  • @rmtuser: Der Anmeldename, der Zugriff auf die Zieldatenbank hat.
  • @rmtpassword: Das Passwort für den Anmeldenamen.

Schritt 1: Verbindung mit der Instance von RDS für SQL Server herstellen

Stellen Sie über die Master-Anmeldung eine Verbindung zur Instance her und führen Sie dann den folgenden Befehl aus. Stellen Sie sicher, dass Sie den Endpunkt und nicht die IP-Adresse verwenden. IP-Adressen von RDS-Instances können sich während eines Hostersatzes ändern.

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

Schritt 2: Testen Sie den verbundenen Server

1.    Stellen Sie in Microsoft SQL Server Management Studio (SSMS) eine Verbindung mit der RDS-Instance her.

2.    Wählen Sie im Menü Ansicht die Option Objekt-Explorer aus.

3.    Wählen Sie Serverobjekte, verbundene Server aus.

4.    Klicken Sie mit der rechten Maustaste auf Ihren Servernamen und wählen Sie dann Verbindung testen.

Schritt 3: Abfragen des verbundenen Servers

Führen Sie die folgende Abfrage aus:

select * from [LinkedServerName].[Databasename].[schemaname].[tablename]

Instance von RDS für SQL Server zu einer EC2-SQL-Server-Instance oder einem On-Premises-SQL-Server

Schritt 1: Erstellen Sie den verbundenen Server

Erstellen Sie den verbundenen Server mit RDS für SQL Server als Quelle für SQL Server auf einer EC2-Instance oder zu einem On-Premises-SQL-Server.

Führen Sie die folgenden Befehle aus, um den verbundenen Server mit der IP-Adresse für den Remoteserver zu erstellen:

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

Führen Sie die folgenden Befehle aus, um den verbundenen Server unter Verwendung des DNS-Namens für den Remoteserver zu erstellen:

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

Schritt 2: Testen Sie den verbundenen Server

1.    Stellen Sie in Microsoft SQL Server Management Studio (SSMS) eine Verbindung mit der RDS-Instance her.

2.    Wählen Sie im Menü Ansicht die Option Objekt-Explorer aus.

3.    Wählen Sie Serverobjekte, verbundene Server aus.

4.    Klicken Sie mit der rechten Maustaste auf Ihren Servernamen und wählen Sie dann Verbindung testen.

Schritt 3: Abfragen des verbundenen Servers

Führen Sie die folgende Abfrage aus:

select * from [LinkedServerName].[Databasename].[schemaname].[tablename]

Konfigurieren des verbundenen Servers mithilfe der Microsoft-Windows-Authentifizierung

Hinweis: Die Konfiguration eines verbundenen Servers von RDS für SQL Server zu einer EC2-Instance oder zu einem On-Premises-SQL-Server mithilfe der Windows-Authentifizierung wird nicht unterstützt.

Voraussetzungen

  • Sie müssen die Domäne erstellt haben und mit AWS Managed Microsoft AD verbunden sein.
  • Die Quell-EC2-SQL-Server-Instance und der Ziel-RDS-SQL-Server müssen über Konnektivität verfügen.

Schritt 1: Konfigurieren des verbundenen Servers von einem EC2- oder On-Premises-SQL-Server zu RDS für SQL Server mithilfe der Windows-Authentifizierung

1.    Melden Sie sich mit Ihrem Domänenanmeldung an und führen Sie die folgende Abfrage aus, um den verbundenen Server zu erstellen.

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

Schritt 2: Testen Sie den verbundenen Server

1.    Stellen Sie in Microsoft SQL Server Management Studio (SSMS) eine Verbindung mit der RDS-Instance her.

2.    Wählen Sie im Menü Ansicht die Option Objekt-Explorer aus.

3.    Wählen Sie Serverobjekte, verbundene Server aus.

4.    Klicken Sie mit der rechten Maustaste auf Ihren Servernamen und wählen Sie Verbindung testen.

Schritt 3: Abfragen des verbundenen Servers

Führen Sie die folgende Abfrage aus:

select * from [LinkedServerName].[Databasename].[schemaname].[tablename]

Fehlerbehebung

Möglicherweise wird die folgende Fehlermeldung angezeigt, wenn Sie eine Verbindung vom Client herstellen:

Msg 18456, Level 14, State 1, Line 21
Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'

Dieser Fehler wird durch einen „Double Hop“ verursacht. Ein Double Hop tritt auf, wenn ein Computer mit einem anderen Computer verbunden wird, um eine Verbindung zu einem dritten Computer herzustellen. Double Hops können in den folgenden Szenarien auftreten:

  • Es gibt keine service principal name configuration (SPN – Serviceprinzipalnamenkonfiguration) für AWS Managed AD, um die Authentifizierung zwischen dem Client und der EC2-Instance zu verarbeiten.
  • Der verbundene Server wird mit einem Endpunkt konfiguriert, der nicht aus Ihrer Domäne stammt, z. B. der Endpunkt der RDS-Instance. Die Authentifizierungsmethode für EC2 und RDS muss KERBEROS sein.

Gehen Sie wie folgt vor, um dieses Problem zu beheben:

Schritt 1: Überprüfen Sie die Authentifizierungsmethode, um zu bestätigen, dass KERBEROS bei der Verbindung zu RDS und EC2 ausgewählt wird

Führen Sie die folgende Abfrage mit der Domänenanmeldung vom Client aus:

select @@servername as ServerName, session_id,net_transport, auth_scheme from sys.dm_exec_connections where session_id= @@spid;

Schritt 2: Korrigieren Sie die SPNs für das SQL-Server-Servicekonto, das Teil Ihrer Domäne ist

1.    Wählen Sie unter Active Directory Benutzer und Computer, YourDomain.com, YourDomain, Benutzer aus.

2.    Rechtsklicken Sie auf YourServiceAccount, um die Eigenschaften anzuzeigen.

3.    Wählen Sie auf der Registerkarte Delegierung die Option Diesem Benutzer für die Delegierung an einen beliebigen Dienst vertrauen (nur Kerberos), und wählen Sie dann OK aus.

4.    Starten Sie den SQL-Serverservice auf der EC2-Instance oder dem On-Premises-SQL-Server neu.

5.     Fügen Sie den SPN für das Servicekonto hinzu, wie im folgenden Befehlsbeispiel gezeigt. Ersetzen Sie YourDomainName\ServiceAccountName und die Domäne Ec2name durch die richtigen Werte für Ihre Domäne.

setspn -A MSSQLSvc/Ec2name.domain.com YourDomainName\ServiceAccountName
setspn -A MSSQLSvc/Ec2name.domain.com:1433 YourDomainName\ServiceAccountName

6.    Führen Sie den folgenden Befehl aus, um die neu erstellten SPNs zu überprüfen:

setspn -l YourDomainName\ServiceAccountName

Schritt 3: Erstellen Sie den verknüpften Server unter Verwendung des RDS-Endpunkts YourDomain.com neu

1.    Führen Sie die folgende Abfrage in RDS für SQL Server aus, um den Servernamen abzurufen:

select @@servername as ServerName, session_id,net_transport, auth_scheme from sys.dm_exec_connections where session_id= @@spid;

2.    Überprüfen Sie in der Ausgabe des vorherigen Befehls die Spalte Servername, um den SPN zu überprüfen, wie im folgenden Beispiel gezeigt.

setspn -l YourServerName

In der vorherigen Befehlsausgabe werden auch die registrierten ServicePrincipalNames für Ihre RDS-Instance angezeigt, wie im folgenden Beispiel gezeigt:

MSSQLSvc/ YourServerName.yourdomainname.com:1433

3.    Führen Sie den folgenden Befehl aus, um den verbundenen Server mithilfe der Domänenanmeldung neu zu erstellen. Die Datenquelle ist dieselbe, die Sie aus der Befehlsausgabe in Schritt 2 abgerufen haben.

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.    Testen Sie die Konnektivität vom Client aus.

Hinweis: Derzeit wird ein verbundener Server als Ziel für SQL-Server unterstützt. Dies liegt daran, dass Amazon RDS ein verwalteter Service ist. Sie haben keinen Betriebssystemzugriff, um zusätzliche ODBC oder einen der Treiber zu installieren, die für die Verbindung verschiedener Datenbankserver wie Oracle, MYSQL, PostgreSQL erforderlich sind.

Für heterogene verbundene Server können Sie RDS Custom für SQL Server verwenden.


War dieser Artikel hilfreich?


Benötigen Sie Hilfe zur Fakturierung oder technischen Support?