Verknüpfte Server verwalten

Auf dieser Seite finden Sie Informationen zum Verwalten verknüpfter Server in Ihrer Cloud SQL-Instanz, einschließlich der Registrierung einer Instanz, dem Hinzufügen von verknüpften Servern und dem Abfragen von verknüpften Servern.

Instanz registrieren, um verknüpfte Server zuzulassen

Verwenden Sie den folgenden Befehl, um Ihrer Instanz das Flag cloudsql enable linked servers hinzuzufügen:

gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=on

Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz, die Sie zum Verknüpfen von Servern verwenden möchten.

Weitere Informationen finden Sie unter Datenbank-Flags konfigurieren.

Verknüpften Server hinzufügen

Führen Sie den Transact-SQL-Befehl sp_addlinkedserver aus, um einen verknüpften Server hinzuzufügen:

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID'

Dabei gilt:

  • LINKED_SERVER_NAME durch den Namen des zu erstellenden verknüpften Servers.
  • TARGET_SERVER_ID durch den Netzwerknamen, den DNS-Namen oder die IP-Adresse für den verknüpften Server. Verwenden Sie für den Instanznamen das Format servername\instancename. Wenn Ihre Instanz einen nicht standardmäßigen Port verwendet, fügen Sie die Portnummer hinzu. Beispiel: servername\instancename, 8080

Führen Sie den folgenden Befehl aus, um eine Nutzerzuordnung für einen derzeit angemeldeten Nutzer hinzuzufügen:

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'True'

Ersetzen Sie LINKED_SERVER_NAME durch den Namen des verknüpften Servers.

Führen Sie den folgenden Befehl aus, um die Standardanmeldung und das Standardpasswort für Remotezugriffe zu erstellen oder zu aktualisieren und auf alle lokalen Anmeldungen anzuwenden:

EXEC master.dbo.sp_addlinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @useself=N'False',
    @locallogin=N'LOGIN',
    @rmtuser=N'USER_ID',
    @rmtpassword='PASSWORD';

Dabei gilt:

  • LINKED_SERVER_NAME durch den Namen des verknüpften Servers.
  • LOGIN mit den Anmeldedaten für den lokalen Server. locallogin ist „sysname“ mit dem Standardwert NULL. NULL gibt an, dass dieser Eintrag für alle lokalen Anmeldungen gilt, die eine Verbindung zu rmtsrvname herstellen. Wenn nicht NULL, ist locallogin entweder eine SQL Server- oder eine Windows-Anmeldung. Wenn Sie eine Windows-Anmeldung verwenden, muss diese entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe mit Zugriff auf den SQL Server zugreifen können.
  • USER_ID durch den Nutzer, der sich anmeldet.
  • PASSWORD durch das Passwort des Nutzers.

Verknüpften Server mit einer verschlüsselten Verbindung hinzufügen

Führen Sie den Transact-SQL-Befehl sp_addlinkedserver aus, um einen verknüpften Server über eine verschlüsselte Verbindung hinzuzufügen:

EXEC master.dbo.sp_addlinkedserver
    @server = N'LINKED_SERVER_NAME',
    @srvproduct=N'',
    @provider=N'SQLNCLI',
    @datasrc=N'TARGET_SERVER_ID,
    @provstr=N'Encrypt=yes;'

Dabei gilt:

  • LINKED_SERVER_NAME durch den Namen des zu erstellenden verknüpften Servers.
  • TARGET_SERVER_ID durch den Namen des Zielservers oder die IP-Adresse und die Portnummer für den Zielserver.

Wenn sich der Name des Servers vom Namen im Zertifikat unterscheidet, müssen Sie angeben, dass der SQL Server dem Serverzertifikat vertrauen kann. Führen Sie den folgenden Befehl aus, um den Anbieterstring zu aktualisieren:

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;'

Dabei gilt:

  • LINKED_SERVER_NAME durch den Namen des zu erstellenden verknüpften Servers.
  • TARGET_SERVER_ID durch den Namen des Zielservers oder die IP-Adresse und die Portnummer für den Zielserver.

Verknüpfte Serverabfragen

Cloud SQL unterstützt die Verwendung von vierteiligen Namen für Abfragen verknüpfter Server (Servername, Datenbankname, Schemaname und Objektname) sowie die folgenden Befehle:

  • OPENQUERY führt eine Abfrage auf einem angegebenen Server aus.
  • Mit EXECUTE können Sie dynamische SQL-Abfragen auf einem verknüpften Server ausführen.

Weitere Informationen finden Sie unter Möglichkeiten zur Remote-Ausführung von Abfragen vergleichen.

Remote-Prozeduraufrufe auf einem verknüpften Server aktivieren

Mit Remoteprozeduraufrufen (RPC, remote Procedure Calls) können Sie gespeicherte Prozeduren auf verknüpften Servern ausführen. Zum Hinzufügen von RPC führen Sie den Transact-SQL-Befehl sp_serveroption mit einem RPC-Argument aus. Es gibt zwei RPC-Argumente:

  • rpc aktiviert RPC vom angegebenen Server.
  • rpc out aktiviert die RPC-Kommunikation mit dem angegebenen Server.

Verwenden Sie den folgenden sp_serveroption-Befehl mit dem Argument rpc, um RPC aus LINKED_SERVER_NAME zu aktivieren:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc',
    @optvalue='TRUE'

Ersetzen Sie LINKED_SERVER_NAME durch den Namen des verknüpften Servers.

Verwenden Sie den folgenden sp_serveroption-Befehl mit dem Argument rpc out, um RPC zu aktivieren:

EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='rpc out',
    @optvalue='TRUE'

Ersetzen Sie LINKED_SERVER_NAME durch den Namen des verknüpften Servers.

Nutzerzuordnung für einen verknüpften Server entfernen

Führen Sie den folgenden Befehl aus, um eine zuvor hinzugefügte Nutzerzuordnung zu entfernen:

EXEC master.dbo.sp_droplinkedsrvlogin
    @rmtsrvname=N'LINKED_SERVER_NAME',
    @locallogin=N'LOGIN';

Dabei gilt:

  • LINKED_SERVER_NAME durch den Namen des zu löschenden verknüpften Servers.
  • LOGIN mit den Anmeldedaten für den lokalen Server. locallogin ist „sysname“ mit dem Standardwert NULL. NULL gibt an, dass dieser Eintrag für alle lokalen Anmeldungen gilt, die eine Verbindung zu rmtsrvname herstellen. Wenn nicht NULL, ist locallogin entweder eine SQL Server- oder eine Windows-Anmeldung. Wenn Sie eine Windows-Anmeldung verwenden, muss diese entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe mit Zugriff auf den SQL Server zugreifen können.

Eine registrierte Instanz aus der Zulassungsliste für verknüpfte Server entfernen

So entfernen Sie verknüpfte Server:

  • Löschen Sie vorhandene verknüpfte Server mit der gespeicherten Prozedur sp_dropserver von Transact-SQL.
  • Entfernen Sie das Flag cloudsql enable linked servers, um eine registrierte Instanz zu entfernen.

    gcloud sql instances patch INSTANCE_NAME --database-flags="cloudsql enable linked servers"=off
    

    Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz, aus der Sie verknüpfte Server entfernen möchten.

    Alternativ können Sie den folgenden Befehl ausführen, um alle Datenbank-Flags zu löschen:

    gcloud sql instances patch INSTANCE_NAME --clear-database-flags
    

    Ersetzen Sie INSTANCE_NAME durch den Namen der Instanz, aus der Sie verknüpfte Server entfernen möchten.

Fehlerbehebung

Fehlermeldung Fehlerbehebung
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
Die Option DataAccess ist deaktiviert. Führen Sie den folgenden Befehl aus, um den Datenzugriff zu aktivieren:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

Ersetzen Sie LINKED_SERVER_NAME durch den Namen des verknüpften Servers.

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) Wenn dieses Problem bei der Herstellung einer verschlüsselten Verbindung auftritt, müssen Sie eine andere Methode angeben, um die Nutzer-ID beim Zugriff auf den verknüpften Server anzugeben. Führen Sie hierzu den folgenden Befehl aus:
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'

Ersetzen Sie Folgendes:

  • LINKED_SERVER_NAME durch den Namen des verknüpften Servers.
  • TARGET_SERVER_ID durch den Namen des Zielservers oder die IP-Adresse und die Portnummer für den Zielserver.
  • USER_ID durch den Nutzer, der sich anmeldet.

Nächste Schritte