Serveurs liés (Moteur de base de données)

Configurez un serveur lié pour permettre à Moteur de base de données SQL Server d'exécuter des commandes sur des sources de données OLE DB situées en dehors de l'instance de SQL Server. En général, les serveurs liés sont configurés pour permettre au Moteur de base de données d'exécuter une instruction Transact-SQL qui inclut des tables situées dans une autre instance de SQL Server ou un autre produit de base de données comme Oracle. De nombreux types de sources de données OLE DB peuvent être configurés comme serveurs liés, y compris Microsoft Access et Excel. Les serveurs liés offrent les avantages suivants :

  • la possibilité d'accéder à des données extérieures à SQL Server ;

  • la possibilité d'émettre des requêtes, des mises à jour, des commandes et des transactions partagées sur des sources de données hétérogènes situées dans les différents services de l'entreprise ;

  • la possibilité de traiter diverses sources de données de manière identique.

Vous pouvez configurer un serveur lié à l'aide de SQL Server Management Studio ou de l'instruction sp_addlinkedserver (Transact-SQL). Le type et le nombre de paramètres requis sont très différents en fonction des fournisseurs OLE DB. Par exemple, certains fournisseurs exigent que vous fournissez un contexte de sécurité pour la connexion à l'aide de sp_addlinkedsrvlogin (Transact-SQL). Certains fournisseurs OLE DB autorisent SQL Server à mettre à jour les données sur la source OLE DB. D'autres fournissent uniquement un accès en lecture seule aux données. Pour plus d'informations sur chaque fournisseur OLE DB, consultez sa documentation.

Composants des serveurs liés

Une définition de serveur lié spécifie les objets suivants :

  • Un fournisseur OLE°DB

  • Une source de données OLE°DB

Un fournisseur OLE°DB représente une DLL qui gère une source de données spécifique et interagit avec elle. Une source de données OLE DB identifie la base de données spécifique accessible via OLE DB. Bien que les sources de données interrogées au moyen des définitions de serveurs liés soient d'ordinaire des bases de données, des fournisseurs OLE°DB existent pour différents fichiers et formats de fichiers, dont les fichiers texte, les données incluses dans des feuilles de calcul et les résultats de recherches de contenu.

Le fournisseur OLE DB de Microsoft SQL Server Native Client (PROGID: SQLNCLI11) est le fournisseur OLE DB officiel pour SQL Server.

[!REMARQUE]

Les requêtes distribuées SQL Server ont été conçues pour être utilisées avec tout fournisseur OLE DB qui implémente les interfaces OLE DB requises. Toutefois, SQL Server n'a été testé qu’avec le fournisseur OLE DB de SQL Native Client SQL Server et certains autres fournisseurs.

Détails des serveurs liés

L'illustration suivante montre les aspects fondamentaux d'une configuration de serveurs liés.

Niveau client, niveau serveur et niveau serveur de bases de données

Généralement, les serveurs liés sont utilisés pour le traitement des requêtes distribuées. Lorsqu'une application cliente exécute une requête distribuée via un serveur lié, SQL Server analyse la commande et envoie des demandes à OLE°DB. La requête d'ensemble de lignes peut se présenter sous la forme d'une exécution de requête vers le fournisseur, ou par l'ouverture d'une table de base à partir du fournisseur.

Pour qu'une source de données renvoie les données via un serveur lié, le fournisseur OLE DB (DLL) associé à cette source de données doit se trouver sur le même serveur que l'instance de SQL Server.

Lorsqu'un fournisseur OLE°DB tiers est utilisé, le compte sous lequel le service SQL Server s'exécute doit disposer d'autorisations de lecture et d'exécution sur le répertoire, et sur tous les sous-répertoires correspondants, dans lequel le fournisseur est installé.

Gestion des fournisseurs

Un ensemble d'options permettent de contrôler la façon dont SQL Server charge et utilise des fournisseurs OLE DB spécifiés dans le Registre.

Gestion des définitions de serveurs liés

Pendant que vous configurez un serveur lié, inscrivez les informations de connexion et les informations relatives aux sources de données dans SQL Server. Une fois cette source de données enregistrée, vous pouvez y faire référence avec un nom logique unique.

Vous pouvez utiliser des procédures stockées et des affichages catalogue pour gérer les définitions de serveurs liés :

  • Créez une définition de serveurs liés en exécutant sp_addlinkedserver.

  • Visualisez les informations relatives aux serveurs liés définis dans une instance spécifique de SQL Server en exécutant une requête sur les affichages catalogue système sys.servers.

  • Supprimez une définition de serveurs liés en exécutant sp_dropserver. Vous pouvez également utiliser cette procédure stockée pour supprimer un serveur distant.

Vous pouvez également définir des serveurs liés à l'aide de SQL Server Management Studio. Dans l'Explorateur d'objets, cliquez avec le bouton droit sur Objets serveur et sélectionnez Nouveau puis Serveur lié. Pour supprimer une définition de serveur lié, vous pouvez cliquer avec le bouton droit sur le nom du serveur lié puis sélectionner Supprimer.

Lorsque vous exécutez une requête distribuée sur un serveur lié, veillez à inclure pour chaque source de données à interroger un nom de table en quatre parties complet. Ce nom en quatre parties doit figurer sous la forme suivante : linked_server_name.catalog**.schema.**object_name.

[!REMARQUE]

Les serveurs liés peuvent être définis de façon à repointer (en bouclage) vers le serveur sur lequel ils sont définis. Les serveurs en boucle sont particulièrement utiles pour tester une application utilisant des requêtes distribuées sur un réseau comportant un seul serveur. Les serveurs liés en boucle sont conçus à des fins de test et ne sont pas pris en charge pour de nombreuses opérations, telles que les transactions distribuées.

Tâches associées

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

sp_addlinkedserver (Transact-SQL)

sp_addlinkedsrvlogin (Transact-SQL)

sp_dropserver (Transact-SQL)

Contenu connexe

sys.servers (Transact-SQL)

sp_linkedservers (Transact-SQL)