Utilisation de requêtes directes comme des tables

SQL Server envoie les requêtes directes sous forme de chaînes de requêtes non interprétées à une source de données OLE DB. La syntaxe de ces requêtes doit être compatible avec la source de données OLE DB. Une instruction Transact-SQL utilise le résultat d'une requête directe comme s'il s'agissait d'une référence de table habituelle.

Pour générer un ensemble de lignes à partir d'un fournisseur OLE DB, vous pouvez utiliser les méthodes suivantes :

  • Référencer un objet figurant dans la source de données que le fournisseur peut présenter sous forme d'un ensemble de lignes tabulaire. Tous les fournisseurs prennent en charge cette fonctionnalité.

  • Envoyer au fournisseur une commande qu'il peut traiter et présenter le résultat de cette commande sous la forme d'un ensemble de lignes. Cette fonction exige que le fournisseur prenne en charge l'objet OLE DB Command et toutes ses interfaces obligatoires.

Lorsqu'un fournisseur prend en charge l'objet Command, les fonctions Transact-SQL suivantes permettent d'envoyer les commandes du fournisseur, appelées « requêtes directes » :

  • OPENQUERY envoie une chaîne de commandes à une source de données OLE DB au moyen d'un nom de serveur lié.

  • OPENROWSET et OPENDATASOURCE prennent en charge l'envoi d'une chaîne de commandes à une source de données OLE DB. L'ensemble de lignes obtenu peut être référencé à l'aide d'un nom approprié.

OPENROWSET et OPENQUERY ne prennent en charge une requête directe dans laquelle la chaîne de requête contient un appel de procédure stockée que lorsque la requête présente l'une des caractéristiques suivantes :

  • Elle exécute une instruction SELECT statique unique.

  • Elle n'utilise pas d'instruction EXECUTE dynamique.

  • Elle n'effectue aucune opération de modification de données.

La spécification OLE DB ne définit pas un langage de commande à utiliser par tous les fournisseurs OLE DB. Ces derniers peuvent prendre en charge tout langage de commande lié aux données qu'ils présentent. Les fournisseurs OLE DB qui exposent les données dans les bases de données relationnelles prennent généralement en charge le langage SQL. D'autres types de fournisseurs, comme ceux qui présentent les données dans un fichier de message électronique ou dans un répertoire réseau, prennent généralement en charge un autre langage.