OPENDATASOURCE (Transact-SQL)

Fournit les informations de connexion pertinentes sous la forme d'un nom d'objet composé de quatre parties sans utiliser un nom de serveur lié.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

OPENDATASOURCE ( provider_name, init_string )

Arguments

  • provider_name
    Nom enregistré comme PROGID du fournisseur OLE DB utilisé pour accéder à la source de données. provider_name est de type char et n'a pas de valeur par défaut.

  • init_string
    Chaîne de connexion transmise à l'interface IDataInitialize du fournisseur de destination. La syntaxe de la chaîne du fournisseur est basée sur des paires mot clé-valeur séparées par un point-virgule, par exemple : 'keyword1=value;keyword2=value'.

    Pour plus d'informations sur les paires mot clé-valeur prises en charge par le fournisseur, consultez le kit de développement logiciel (SDK) de Microsoft Data Access. Cette documentation définit la syntaxe de base. Le tableau suivant recense les mots clés utilisés fréquemment dans l'argument init_string.

    Mot clé

    Propriété OLE DB

    Valeurs admises et description

    Data Source

    DBPROP_INIT_DATASOURCE

    Nom de la source de données à laquelle la connexion doit être établie. Ceci est interprété différemment selon les fournisseurs. Pour le fournisseur SQL Server Native Client OLE DB, cette propriété indique le nom du serveur. Pour le fournisseur Jet OLE DB, elle indique le chemin d'accès complet au fichier .mdb ou .xls.

    Emplacement

    DBPROP_INIT_LOCATION

    Emplacement de la base de données à laquelle la connexion doit être établie

    Extended Properties

    DBPROP_INIT_PROVIDERSTRING

    Chaîne de connexion spécifique au fournisseur

    Connect timeout

    DBPROP_INIT_TIMEOUT

    Délai d'expiration au bout duquel la tentative de connexion échoue

    User ID

    DBPROP_AUTH_USERID

    ID utilisateur à utiliser pour la connexion

    Password

    DBPROP_AUTH_PASSWORD

    Mot de passe à utiliser pour la connexion

    Catalog

    DBPROP_INIT_CATALOG

    Nom du catalogue initial ou par défaut lors de la connexion à la source de données

    Integrated Security

    DBPROP_AUTH_INTEGRATED

    SSPI pour spécifier l'authentification Windows

Notes

OPENDATASOURCE ne peut être utilisé pour accéder à des données distantes à partir de sources de données OLE DB que si l'option de Registre DisallowAdhocAccess est explicitement définie avec la valeur 0 pour le fournisseur spécifié et que l'option de configuration avancée Ad Hoc Distributed Queries est activée. Lorsque ces options ne sont pas définies, le comportement par défaut n'autorise pas l'accès d'égal à égal.

La fonction OPENDATASOURCE peut être utilisée dans les mêmes emplacements de syntaxe Transact-SQL qu'un nom de serveur lié. OPENDATASOURCE peut donc constituer la première des quatre parties d'un nom qui fait référence à un nom de table ou de vue (dans une instruction SELECT, INSERT, UPDATE ou DELETE) ou à une procédure stockée distante (dans une instruction EXECUTE). Lors de l'exécution de procédures stockées distantes, OPENDATASOURCE doit faire référence à une autre instance de SQL Server. OPENDATASOURCE n'accepte pas de variables pour ses arguments.

Comme la fonction OPENROWSET, OPENDATASOURCE doit uniquement faire référence à des sources de données OLE DB qui ne sont pas sollicitées fréquemment. Définissez un serveur lié pour toutes les sources de données qui font l'objet de nombreux accès. OPENDATASOURCE et OPENROWSET n'offrent pas toutes les fonctionnalités des définitions de serveur lié, en particulier en ce qui concerne la gestion de la sécurité et la consultation des informations du catalogue. Toutes les informations de connexion, y compris les mots de passe, doivent être fournies à chaque appel de OPENDATASOURCE.

Important

L'authentification Windows est plus sûre que l'authentification SQL Server. Veillez à utiliser l'authentification Windows chaque fois que c'est possible. OPENDATASOURCE ne doit pas être utilisé avec des mots de passe explicites dans la chaîne de connexion.

Les exigences de connexion pour chaque fournisseur sont semblables à celles de ces paramètres lors de la création de serveurs liés. Les détails relatifs à un grand nombre de fournisseurs courants sont répertoriés dans la rubrique sp_addlinkedserver (Transact-SQL).

Tout appel à OPENDATASOURCE, OPENQUERY ou OPENROWSET dans la clause FROM est évalué séparément et indépendamment de tout appel à ces fonctions utilisées comme cible de la mise à jour, même si des arguments identiques sont fournis aux deux appels. En particulier, les conditions de filtre ou de jointure appliquées sur le résultat de l'un de ces appels n'ont aucun effet sur les résultats de l'autre.

Autorisations

Tous les utilisateurs peuvent exécuter OPENDATASOURCE. Les autorisations utilisées pour la connexion au serveur distant sont déterminées à partir de la chaîne de connexion.

Exemples

L'exemple suivant crée une connexion ad hoc à l'instance Payroll de SQL Server sur le serveur London et interroge la table AdventureWorks2008R2.HumanResources.Employee. (L'utilisation de SQLNCLI et SQL Server vous redirigera vers la version la plus récente du fournisseur SQL Server Native Client OLE DB.)

SELECT *
FROM OPENDATASOURCE('SQLNCLI',
    'Data Source=London\Payroll;Integrated Security=SSPI')
    .AdventureWorks2008R2.HumanResources.Employee

L’exemple suivant crée une connexion ad hoc avec une feuille de calcul Excel au format de document Word 1997 - 2003.

SELECT * FROM OPENDATASOURCE('Microsoft.Jet.OLEDB.4.0',
'Data Source=C:\DataFolder\Documents\TestExcel.xls;Extended Properties=EXCEL 5.0')...[Sheet1$] ;