Identification d'une source de données à l'aide d'un nom de serveur lié

Après avoir défini un serveur lié, vous pouvez utiliser un nom composé de quatre parties sous la forme linked_server_name**.catalog.**schema.object_name dans des instructions Transact-SQL pour référencer les objets de données de ce serveur lié. Ces parties sont définies comme suit :

  • linked_server_name
    Serveur lié référençant la source de données OLE DB.

  • catalog
    Catalogue de la source de données OLE DB qui contient l'objet.

  • schema
    Schéma du catalogue qui contient l'objet.

  • object_name
    Objet de données dans le schéma.

Par exemple, la requête suivante référence les tables Production.Product et Sales.SalesOrderDetails de la base de données AdventureWorks2008R2 sur le serveur lié SEATTLESales :

SELECT p.Name, sod.SalesOrderID

FROM SEATTLESales.AdventureWorks2008R2.Production.Product p

INNER JOIN SEATTLESales.AdventureWorks2008R2.Sales.SalesOrderDetail sod

ON p.ProductID = sod.ProductID

ORDER BY p.Name ;

SQL Server utilise linked_server_name pour identifier le fournisseur OLE DB et la source de données. Les paramètres catalog, schema et object_name sont transmis au fournisseur OLE DB pour identifier un objet de données spécifique. Quand le serveur lié fait référence à une instance de SQL Server, catalog désigne une base de données et schema un schéma.

Dans les versions antérieures de SQL Server, un schéma est le propriétaire d'un objet. Dans SQL Server, les schémas existent indépendamment de l'utilisateur de la base de données qui les crée. Pour plus d'informations sur les schémas dans SQL Server, consultez Séparation du schéma et de l'utilisateur.

Utilisez systématiquement des noms complets lorsque vous manipulez des objets situés sur des serveurs liés. La résolution implicite du nom de propriétaire de dbo n'est pas prise en charge pour les tables des serveurs liés. Par conséquent, une requête dépourvue de nom de schéma génère une erreur 7313, même si le serveur lié est situé sur une autre instance de SQL Server.

L'administrateur système peut contrôler les utilisateurs ayant accès à un serveur lié particulier en configurant des mappages de connexion à l'aide de la procédure stockée système sp_addlinkedsrvlogin. Cette dernière permet de définir un nom d'accès distant et un mot de passe pour une connexion locale spécifique, ainsi que des mappages autonomes de connexions Windows authentifiées.

Remarque relative à la sécuritéRemarque relative à la sécurité

Lors de la connexion à une autre source de données, SQL Server emprunte le nom d'accès pour les connexions Windows authentifiées ; cependant, SQL Server ne peut pas emprunter les noms d'accès pour les connexions SQL Server authentifiées, avec lesquelles SQL Server peut accéder à une autre source de données, comme des fichiers ou des données non relationnelles (Active Directory par exemple), au moyen du contexte de sécurité du compte Windows sous lequel le service SQL Server est exécuté. De cette façon, ces noms d'accès risquent de pouvoir accéder à une autre source de données alors qu'ils n'en ont pas l'autorisation, puisque le compte sous lequel le service SQL Server est exécuté dispose de cette autorisation. Réfléchissez à cette éventualité lorsque vous donnez accès à une connexion SQL Server authentifiée à un serveur lié à l'aide de sp_addlinkedsrvlogin.