Partager via


Fournisseur OLE DB pour Jet

Le fournisseur Microsoft OLE DB pour Jet fournit une interface OLE DB aux bases de données Microsoft Access, et permet aux requêtes distribuées de SQL Server 2005 et versions ultérieures d'interroger les bases de données Access et les feuilles de calcul Excel.

Pour créer un serveur lié pour accéder à une base de données Access

  1. Exécutez sp_addlinkedserver pour créer le serveur lié en spécifiant Microsoft.Jet.OLEDB.4.0 comme provider_name et le chemin complet du fichier .mdb de base de données Access comme data_source. Le fichier .mdb de base de données doit résider sur le serveur. data_source est évalué sur le serveur, et non pas sur le client, et le chemin doit être valide sur le serveur.

    Par exemple, pour créer un serveur lié nommé Nwind fonctionnant sur la base de données Access nommée Nwind.mdb située dans le répertoire c:\mydata directory, exécutez la commande suivante :

    sp_addlinkedserver 'Nwind', 'Access', 'Microsoft.Jet.OLEDB.4.0', 
       'c:\mydata\Nwind.mdb'
    
  2. Pour accéder à une base de données Access non sécurisée, les connexions SQL Server tentant d'accéder à une base de données Access doivent disposer d'un mappage de connexion défini sur le nom d'utilisateur Admin sans mot de passe.

    L'exemple suivant permet à l'utilisateur local Joe d'accéder au serveur lié nommé Nwind.

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe', 'Admin', NULL
    

    Pour accéder à une base de données Access sécurisée, configurez le Registre à l'aide de l'Éditeur du Registre de façon à utiliser le fichier d'informations de groupe de travail dont se sert Access. Utilisez l'Éditeur du Registre pour ajouter le chemin complet de ce fichier à l'entrée suivante du Registre :

    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\SystemDB

  3. Une fois l'entrée du Registre configurée, utilisez sp_addlinkedsrvlogin pour créer des mappages de connexion entre les connexions locales et les connexions Access :

    sp_addlinkedsrvlogin 'Nwind', false, 'Joe',
        'AccessUser', '034fhd99dl'
    
Remarque relative à la sécuritéRemarque relative à la sécurité

Cet exemple n'utilise pas l'authentification Windows. Les mots de passe sont transmis sans être chiffrés. Les mots de passe peuvent être visibles dans les définitions des sources de données et dans les scripts enregistrés sur disque, dans les sauvegardes et dans les fichiers journaux. N'utilisez jamais le mot de passe d'un administrateur pour ce type de connexion. Contactez votre administrateur réseau pour obtenir les conseils de sécurité propres à votre environnement.

Les bases de données Access ne disposent pas de noms de catalogue ni de schéma. Par conséquent, les tables situées sur un serveur lié Access peuvent être référencées dans des requêtes distribuées à l'aide d'un nom en quatre parties respectant la forme linked_server**...**table_name.

L'exemple suivant permet d'extraire toutes les lignes de la table Employees située sur le serveur lié Nwind.

SELECT * 
FROM Nwind...Employees

Pour créer un serveur lié avec une feuille de calcul Excel

Le Fournisseur Microsoft OLE DB pour Jet 4.0 peut être utilisé pour accéder à des feuilles de calcul Microsoft Excel.

  • Pour créer un serveur lié qui accède à une feuille de calcul Excel, utilisez le format de l'exemple suivant :

    EXEC sp_addlinkedserver EXCEL,
         'Jet 4.0',
         'Microsoft.Jet.OLEDB.4.0',
         'c:\data\MySheet.xls', 
          NULL,
         'Excel 5.0;'
    
    GO
    
  • Pour accéder aux données d'une feuille de calcul Excel, associez une plage de cellules à un nom. Une plage nommée est accessible en utilisant le nom de la plage comme nom de table. La requête suivante peut être utilisée pour accéder à la plage nommée SalesData en utilisant le serveur lié défini dans l'exemple précédent.

    SELECT *
    FROM EXCEL...SalesData
    GO
    

Lorsque vous insérez une ligne dans une plage nommée de cellules, la ligne est ajoutée après la dernière ligne incluse dans la plage nommée de cellules. Par conséquent, pour insérer la ligne rA après l'en-tête de colonne, associez les cellules d'en-tête de la colonne à un nom et utilisez ce dernier comme nom de table. La plage de cellules croît automatiquement lors de l'insertion de lignes.

Pour définir un serveur lié avec un fichier texte formaté

Le fournisseur Microsoft OLE DB pour Jet peut être employé pour accéder à des fichiers texte et y effectuer des requêtes.

  • Pour créer un serveur lié accédant directement aux fichiers texte, sans lier les fichiers sous forme de tables dans un fichier .mdb Access, exécutez sp_addlinkedserver, comme dans l'exemple ci-dessous.

    Le fournisseur est Microsoft.Jet.OLEDB.4.0 et la chaîne du fournisseur est 'Text'. La source de données est le nom du chemin d'accès complet au répertoire qui contient les fichiers texte. Un fichier Schema.ini doit exister dans le même répertoire que les fichiers texte. Le fichier Schema.ini décrit la structure du fichier texte. Pour plus d'informations sur la manière de créer un fichier Schema.ini, consultez la documentation du moteur de base de données Jet.

    --Create a linked server.
    EXEC sp_addlinkedserver txtsrv, 'Jet 4.0', 
       'Microsoft.Jet.OLEDB.4.0',
       'c:\data\distqry',
       NULL,
       'Text'
    GO
    
    --Set up login mappings.
    EXEC sp_addlinkedsrvlogin txtsrv, FALSE, NULL, Admin, NULL
    GO
    
    --List the tables in the linked server.
    EXEC sp_tables_ex txtsrv
    GO
    
    --Query one of the tables: file1#txt
    --by using a four-part name. 
    SELECT * 
    FROM txtsrv...[file1#txt]