Partager via


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

Lorsque vous savez que la source de données OLE DB ne sera pas référencée suffisamment souvent pour justifier la configuration d'un serveur lié, vous pouvez utiliser un nom approprié comme référence de table. Dans SQL Server, vous pouvez utiliser les fonctions OPENROWSET et OPENDATASOURCE pour fournir un nom approprié.

Vous ne pouvez contrôler qui peut accéder à une source de données spécifique que par le biais de serveurs liés. Étant donné que ce contrôle n'est pas disponible pour les noms appropriés, ceux-ci sont désactivés par défaut pour tous les fournisseurs OLE DB, à l'exception du fournisseur OLE DB SQL Server Native Client.

Important

Pour chaque instance de SQL Server, les membres du rôle serveur fixe sysadmin peuvent activer ou désactiver l'utilisation de noms de connecteur ad hoc pour un fournisseur OLE DB à l'aide de l'option de fournisseur DisallowAdhocAccess et de l'option de configuration de serveur Requêtes distribuées appropriées. Lorsque l'accès ad hoc est activé, tout utilisateur connecté à cette instance peut exécuter des instructions SQL qui contiennent des noms de connecteur ad hoc référençant n'importe quelle source de données sur le réseau accessible à l'aide de ce fournisseur OLE DB. Afin de contrôler l'accès aux sources de données, les membres du rôle sysadmin peuvent désactiver l'accès ad hoc pour ce fournisseur OLE DB, limitant ainsi l'accès des utilisateurs aux sources de données référencées par les noms de serveurs liés définis par les administrateurs. Par défaut, l'accès ad hoc est activé pour le fournisseur OLE DB SQL Server Native Client et désactivé pour tous les autres fournisseurs OLE DB.

OPENROWSET et OPENDATASOURCE fournissent les informations de connexion ad hoc. Ces fonctions vous permettent de spécifier toutes les informations requises pour accéder à la source de données OLE DB ; toutefois, vous ne pouvez pas utiliser OPENROWSET et OPENDATASOURCE de façon interchangeable :

  • Vous pouvez employer OPENROWSET lorsque le fournisseur OLE DB renvoie des ensembles de lignes en spécifiant un nom de table (ou de vue) ou une requête qui renvoie un ensemble de lignes. Vous pouvez utiliser OPENROWSET à la place d'un nom de table ou de vue dans une instruction Transact-SQL.

  • Recourez à OPENDATASOURCE uniquement lorsque le fournisseur expose des ensembles de lignes et utilise la notation catalog**.schema.object. Dans la syntaxe Transact-SQL, OPENDATASOURCE peut être employée dans le même emplacement qu'un nom de serveur lié. Par conséquent, dans la notation catalog.schema.**object, vous pouvez utiliser OPENDATASOURCE comme première partie d'un nom en quatre parties qui fait référence à une table ou à une vue.

OPENROWSET et OPENDATASOURCE devraient être utilisées uniquement pour l'accès aux données externes dans des situations précises, lorsqu'un serveur lié permanent ne peut pas être configuré. OPENROWSET et OPENDATASOURCE ne fournissent pas toutes les fonctionnalités disponibles sur un serveur lié, telles que la gestion des mappages de connexion, la capacité d'interroger les métadonnées du serveur lié, et la capacité de configurer divers paramètres de connexion tels que ceux du délai d'attente.

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

Lors de la connexion à une autre source de données, SQL Server emprunte correctement l'identité des connexions authentifiées Windows ; toutefois, SQL Server ne peut pas emprunter l'identité des connexions authentifiées SQL Server. Par conséquent, pour les connexions authentifiées SQL Server, SQL Server peut accéder à une autre source de données, telle que des fichiers, des sources de données non relationnelles telles qu'Active Directory, à l'aide du contexte de sécurité du compte Windows sous lequel le service SQL Server est en cours d'exécution. Ce procédé est susceptible d'accorder à ces connexions un accès à une autre source de données sur laquelle elles n'ont pas d'autorisations, mais le compte sous lequel le service SQL Server est en cours d'exécution bénéficie d'autorisations. Vous devez envisager cette possibilité lorsque vous utilisez des connexions authentifiées SQL Server.

Les arguments de OPENROWSET et de OPENDATASOURCE n'acceptent pas les variables. Les arguments doivent être spécifiés sous la forme de littéraux de chaîne. Si des variables doivent être transmises en guise d'arguments, une chaîne de requête contenant celles-ci peut être construite dynamiquement et exécutée à l'aide de l'instruction EXECUTE.