Gérer les serveurs associés

Cette page fournit des informations sur la gestion des serveurs associés sur votre instance Cloud SQL, y compris sur l'enregistrement d'une instance, l'ajout d'un serveur associé et l'interrogation d'un serveur associé.

Enregistrer votre instance pour autoriser les serveurs associés

Pour ajouter l'option cloudsql enable linked servers à votre instance, utilisez la commande suivante :

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

Remplacez INSTANCE_NAME par le nom de l'instance que vous souhaitez utiliser pour associer des serveurs.

Pour en savoir plus, consultez la page Configurer des options de base de données.

Ajouter un serveur associé

Pour ajouter un serveur associé, exécutez la commande Transact-SQL sp_addlinkedserver :

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

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé à créer.
  • TARGET_SERVER_ID par le nom réseau, le nom DNS ou l'adresse IP du serveur associé. Pour le nom de l'instance, utilisez le format servername\instancename. Si votre instance utilise un port non standard, ajoutez le numéro de port. Exemple : servername\instancename, 8080.

Pour ajouter le mappage d'utilisateur d'un utilisateur actuellement connecté, exécutez la commande suivante :

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

Remplacez LINKED_SERVER_NAME par le nom du serveur associé.

Pour créer ou mettre à jour l'identifiant et le mot de passe par défaut pour la connexion à distance, puis les appliquer à toutes les connexions locales, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé.
  • LOGIN par l'identifiant à utiliser pour le serveur local. locallogin est le nom système ("sysname"), avec la valeur par défaut NULL. La valeur NULL indique que cette entrée s'applique à toutes les connexions locales qui se connectent à rmtsrvname. Si la valeur n'est pas NULL, locallogin est un identifiant SQL Server ou Windows. Si vous utilisez un identifiant Windows, il doit avoir accès à SQL Server directement ou via son appartenance à un groupe Windows qui y a accès.
  • USER_ID par l'utilisateur qui se connecte.
  • PASSWORD par le mot de passe utilisateur.

Ajouter un serveur associé avec une connexion chiffrée

Pour ajouter un serveur associé utilisant une connexion chiffrée, exécutez la commande 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;'

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé à créer.
  • TARGET_SERVER_ID par le nom du serveur cible, ou par l'adresse IP et le numéro de port du serveur cible.

Si le nom du serveur est différent du nom dans le certificat, vous devez indiquer que SQL Server peut approuver le certificat du serveur. Pour mettre à jour la chaîne de fournisseur, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé à créer.
  • TARGET_SERVER_ID par le nom du serveur cible, ou par l'adresse IP et le numéro de port du serveur cible.

Requêtes des serveurs associés

Cloud SQL permet l'utilisation de noms en quatre parties pour interroger les serveurs associés (nom du serveur, nom de la base de données, nom du schéma et nom de l'objet), en plus des commandes suivantes :

  • OPENQUERY exécute une requête sur un serveur spécifié.
  • EXECUTE vous permet d'exécuter du langage SQL dynamique sur un serveur associé.

Pour en savoir plus, consultez la page Comparer les options d'exécution à distance des requêtes.

Activer les appels de procédure à distance (RPC) sur un serveur associé

Les appels de procédure à distance (RPC, "Remote Procedure Call") vous permettent d'exécuter des procédures stockées sur les serveurs associés. Pour ajouter le protocole RPC, exécutez la commande Transact-SQL sp_serveroption avec un argument RPC. Il existe deux arguments RPC :

  • rpc active RPC à partir du serveur spécifié.
  • rpc out active RPC sur le serveur spécifié.

Exécutez la commande sp_serveroption suivante avec l'argument rpc pour activer RPC à partir de LINKED_SERVER_NAME :

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

Remplacez LINKED_SERVER_NAME par le nom du serveur associé.

Exécutez la commande sp_serveroption suivante avec l'argument rpc out pour activer RPC :

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

Remplacez LINKED_SERVER_NAME par le nom du serveur associé.

Supprimer le mappage utilisateur pour un serveur associé

Pour supprimer un mappage utilisateur que vous avez précédemment ajouté, exécutez la commande suivante :

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

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé à supprimer.
  • LOGIN par l'identifiant à utiliser pour le serveur local. locallogin est le nom système ("sysname"), avec la valeur par défaut NULL. La valeur NULL indique que cette entrée s'applique à toutes les connexions locales qui se connectent à rmtsrvname. Si la valeur n'est pas NULL, locallogin est un identifiant SQL Server ou Windows. Si vous utilisez un identifiant Windows, il doit avoir accès à SQL Server directement ou via son appartenance à un groupe Windows qui y a accès.

Empêcher une instance inscrite d'autoriser les serveurs associés

Pour supprimer des serveurs associés, procédez comme suit :

  • Supprimez les serveurs associés existants avec la procédure stockée sp_dropserver de Transact-SQL.
  • Supprimez l'option cloudsql enable linked servers pour supprimer une instance inscrite.

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

    Remplacez INSTANCE_NAME par le nom de l'instance sur laquelle vous souhaitez supprimer les serveurs associés.

    Vous pouvez également exécuter la commande suivante pour effacer toutes les options de base de données :

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

    Remplacez INSTANCE_NAME par le nom de l'instance sur laquelle vous souhaitez supprimer les serveurs associés.

Résoudre les problèmes

Message d'erreur Dépannage
Msg 7411, Level 16, State 1, Line 25

Server 'LINKED_SERVER_NAME' is not configured for DATA ACCESS.
L'option DataAccess est désactivée. Exécutez la commande suivante pour activer l'accès aux données:
EXEC sp_serveroption
    @server='LINKED_SERVER_NAME',
    @optname='data access',
    @optvalue='TRUE'

Remplacez LINKED_SERVER_NAME par le nom du serveur associé.

Access to the remote server is denied because no login-mapping exists. (Microsoft SQL Server, Error: 7416) Si vous rencontrez ce problème lors de l'établissement d'une connexion chiffrée, vous devez essayer d'une autre manière de fournir l'ID utilisateur lorsque vous accédez au serveur associé. Pour ce faire, exécutez la commande suivante :
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'

Remplacez les éléments suivants :

  • LINKED_SERVER_NAME par le nom du serveur associé.
  • TARGET_SERVER_ID par le nom du serveur cible, ou par l'adresse IP et le numéro de port du serveur cible.
  • USER_ID par l'utilisateur qui se connecte.

Étapes suivantes