Création de serveurs liés (moteur de base de données SQL Server)

La création d'un serveur lié vous permet d'utiliser des données provenant de plusieurs sources. Il n'est pas nécessaire que le serveur lié soit une autre instance de SQL Server, mais il s'agit d'un scénario courant. Cette rubrique indique comment créer un serveur lié et accéder aux données provenant d'un autre SQL Server.

Dans cette rubrique

  • Avant de commencer :

    Historique

    Sécurité

  • Exemples :

    SQL Server Management Studio

    Transact-SQL

  • Suivi : mesures à prendre après avoir créé un serveur lié

Historique

Un serveur lié autorise l'accès à des sources de données OLE DB par l'intermédiaire de requêtes distribuées et hétérogènes. Une fois qu'un serveur lié a été créé, il est possible d'exécuter des requêtes distribuées sur ce serveur, et les requêtes peuvent joindre des tables de plusieurs sources de données. Si le serveur lié est défini comme une instance de SQL Server, des procédures stockées distantes peuvent être exécutées.

Les fonctions et les arguments requis du serveur lié peuvent considérablement varier. Cette rubrique fournit des exemples typiques, mais toutes les options ne sont pas décrites. Pour plus d'informations, consultez sp_addlinkedserver (Transact-SQL).

Sécurité

Autorisations

Requiert l'autorisation ALTER ANY LINKED SERVER sur le serveur.

[Haut de la page]

Comment créer un serveur lié

Vous pouvez utiliser l'une des options suivantes :

  • SQL Server Management Studio

  • Transact-SQL

Utilisation de SQL Server Management Studio

Pour créer un serveur lié à une autre instance de Serveur SQL à l'aide de SQL Server Management Studio

  1. Dans SQL Server Management Studio, ouvrez l'Explorateur d'objets, développez Objets serveur, cliquez avec le bouton droit sur Serveurs liés, puis cliquez sur Nouveau serveur lié.

  2. Dans la page Général, dans la zone Serveur lié, tapez le nom de l'instance de SQL Server associée au lien.

    Notes

    Si l'instance de SQL Server est l'instance par défaut, entrez le nom de l'ordinateur qui héberge l'instance de SQL Server. Si l'instance de SQL Server est une instance nommée, entrez le nom de l'ordinateur et le nom de l'instance, par exemple Accounting\SQLExpress.

  3. Dans la zone Type de serveur, sélectionnez SQL Server pour indiquer que le serveur lié est une autre instance de SQL Server.

  4. Dans la page Sécurité, spécifiez le contexte de sécurité qui sera utilisé lorsque le SQL Server d'origine se connectera au serveur lié. Dans un environnement de domaine où les utilisateurs se connectent à l'aide de leurs connexions de domaine, sélectionner Seront effectuées dans le contexte de sécurité de la connexion actuelle est souvent le meilleur choix. Lorsque les utilisateurs se connectent au SQL Server d'origine en utilisant un compte de connexion SQL Server, le meilleur choix est souvent de sélectionner Seront effectuées dans ce contexte de sécurité, puis de fournir les informations d'identification nécessaires pour l'authentification sur le serveur lié.

  5. Cliquez sur OK.

[Haut de la page]

Utilisation de Transact-SQL

Pour créer un serveur lié à l'aide de Transact-SQL, utilisez les instructions sp_addlinkedserver (Transact-SQL)CREATE LOGIN (Transact-SQL) et sp_addlinkedsrvlogin (Transact-SQL).

Pour créer un serveur lié à une autre instance de SQL Server à l'aide de Transact-SQL

  1. Dans l'éditeur de requête, entrez la commande Transact-SQL suivante pour créer une liaison avec une instance de SQL Server nommée SRVR002\ACCTG :

    USE [master]
    GO
    EXEC master.dbo.sp_addlinkedserver 
        @server = N'SRVR002\ACCTG', 
        @srvproduct=N'SQL Server' ;
    GO
    
  2. Exécutez le code suivant pour configurer le serveur lié de manière à utiliser les informations d'identification de domaine de la connexion qui utilise le serveur lié.

    EXEC master.dbo.sp_addlinkedsrvlogin 
        @rmtsrvname = N'SRVR002\ACCTG', 
        @locallogin = NULL , 
        @useself = N'True' ;
    GO
    

[Haut de la page]

Suivi : mesures à prendre après avoir créé un serveur lié

Pour tester le serveur lié

  • Exécutez le code suivant pour tester la connexion au serveur lié. Cet exemple retourne les noms des bases de données sur le serveur lié.

    SELECT name FROM [SRVR002\ACCTG].master.sys.sysdatabases ;
    GO
    

Écriture d'une requête qui joint les tables d'un serveur lié

  • Utilisez des noms en quatre parties pour faire référence à un objet sur un serveur lié. Exécutez le code suivant pour retourner une liste de toutes les connexions sur le serveur local avec leurs connexions correspondantes sur le serveur lié.

    SELECT local.name AS LocalLogins, linked.name AS LinkedLogins
    FROM master.sys.server_principals AS local
    LEFT JOIN [SRVR002\ACCTG].master.sys.server_principals AS linked
        ON local.name = linked.name ;
    GO
    

    Lorsque NULL est retourné pour la connexion au serveur lié, cela indique que la connexion n'existe pas sur le serveur lié. Ces connexions ne seront pas en mesure d'utiliser le serveur lié, à moins que le serveur lié ne soit configuré pour passer un contexte de sécurité différent ou que le serveur lié accepte des connexions anonymes.

[Haut de la page]