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 télécharger les pilotes de Microsoft Office 2007, consultez Pilote d'Office System 2007 : composants de connectivité des données.

ConseilConseil

Pour se connecter à Microsoft Access, SQL Server doit démarrer le Moteur de base de données Microsoft Access. Contrairement à la plupart des autres fournisseurs, Microsoft Access n'est pas un fournisseur léger, mais le Moteur de base de données Microsoft Access complet. L'ouverture de Microsoft Access dans l'espace de processus SQL Server peut provoquer des échecs en raison d'un espace disque, de processeurs ou de ressources mémoire insuffisants. Parmi les erreurs figurent : « Impossible d'initialiser l'objet source de données du fournisseur OLE DB ». Pour éviter des erreurs de mémoire insuffisante, configurez le fournisseur de façon à ce qu'il s'ouvre en dehors de l'espace de processus mémoire SQL Server.

Pour exécuter Microsoft Access en dehors de l'espace mémoire SQL Server

  1. Dans l'Explorateur d'objets SQL Server Management Studio, développez SQL Server, développez Objets serveur, développez Serveurs liés, développez Fournisseurs, cliquez avec le bouton droit sur le fournisseur Microsoft Access Microsoft.ACE.OLEDB.12.0 ou Microsoft.Jet.OLEDB.4.0, puis cliquez sur Propriétés.

  2. Dans la zone Options du fournisseur, désactivez Autoriser inprocess.

  3. Cliquez sur OK.

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]