Verknüpfte Server verwalten

Auf dieser Seite wird beschrieben, wie Sie verknüpfte Server auf der Cloud SQL-Instanz verwalten, einschließlich Registrieren einer Instanz, Hinzufügen eines verknüpften Servers und Abfragen eines verknüpften Servers.

Instanz registrieren, um verknüpfte Server zuzulassen

Verwenden Sie den folgenden Befehl, um der 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 die Nutzerzuordnung für einen Nutzer hinzuzufügen, der derzeit angemeldet ist:

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 Standard-Remote-Anmeldung und das Standardpasswort 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 durch die Anmeldung 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-Anmeldung oder eine Windows-Anmeldung. Wenn Sie eine Windows-Anmeldung verwenden, muss diese entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe mit Zugriff Zugriff auf den SQL Server haben.
  • USER_ID durch den Nutzer, der sich anmeldet.
  • PASSWORD durch das Nutzerpasswort.

Verknüpften Server mit verschlüsselter 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 der Name des Servers vom Namen im Zertifikat abweicht, 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 zusätzlich zu den folgenden Befehlen die Verwendung von vierteiligen Namen zum Abfragen verknüpfter Server (Servername, Datenbankname, Schemaname und Objektname):

  • OPENQUERY führt eine Abfrage auf einem bestimmten Server aus.
  • Mit EXECUTE können Sie dynamisches SQL auf einem verknüpften Server ausführen.

Weitere Informationen finden Sie unter Remoteausführungsoptionen für Abfragen vergleichen.

Remoteprozeduraufrufe auf einem verknüpften Server aktivieren

Mit Remoteprozeduraufrufen (RPC) können Sie gespeicherte Prozeduren auf verknüpften Servern ausführen. Führen Sie den Transact-SQL-Befehl sp_serveroption mit einem RPC-Argument aus, um RPC hinzuzufügen. Es gibt zwei RPC-Argumente:

  • rpc aktiviert RPC vom angegebenen Server.
  • rpc out aktiviert RPC zum angegebenen Server.

Verwenden Sie den folgenden sp_serveroption-Befehl mit dem Argument rpc, um RPC von 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 verknüpften Servers, der gelöscht werden soll.
  • LOGIN durch die Anmeldung 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-Anmeldung oder eine Windows-Anmeldung. Wenn Sie eine Windows-Anmeldung verwenden, muss diese entweder direkt oder über die Mitgliedschaft in einer Windows-Gruppe mit Zugriff Zugriff auf den SQL Server haben.

Registrierte Instanz aus verknüpften Servern entfernen

So entfernen Sie verknüpfte Server:

  • Löschen Sie vorhandene verknüpfte Server mit der gespeicherten Prozedur „Transact-SQL“ sp_dropserver.
  • 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