Maison >base de données >tutoriel mysql >Pourquoi mon serveur SQL ne peut-il pas instancier le fournisseur OLE DB pour les exportations de serveur lié vers Excel ?

Pourquoi mon serveur SQL ne peut-il pas instancier le fournisseur OLE DB pour les exportations de serveur lié vers Excel ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-20 20:40:10479parcourir

Why Can't My SQL Server Instantiate the OLE DB Provider for Linked Server Exports to Excel?

Impossible d'instancier le fournisseur OLE DB pour le serveur lié

Problème :

Lors de la tentative de exporter des données d'une table vers Excel à l'aide d'une requête T-SQL, l'erreur "Impossible de créer une instance du fournisseur OLE DB" Microsoft.Jet.OLEDB.4.0 pour le serveur lié null" se produit.

Cause :

Cette erreur se produit généralement lorsque :

  • Le l'utilisateur ne dispose pas des autorisations suffisantes pour accéder au dossier temporaire utilisé par OPENROWSET.
  • Le fournisseur OLE DB 32 bits (Microsoft.Jet.OLEDB.4.0) ne peut pas être chargé en cours de processus sur un serveur SQL 64 bits.

Solution pour serveur SQL 64 bits :

  1. Téléchargez et installez Microsoft.ACE.OLEDB.12.0 pour Windows 64 bits.
  2. Accordez l'accès au répertoire temporaire (C:WindowsServiceProfilesNetworkServiceAppDataLocalTemp pour un compte de service réseau) au compte exécutant SQL Server.
  3. Activez les requêtes distribuées ad hoc et configurez Microsoft.ACE.OLEDB propriétés :

    SP_CONFIGURE 'show advanced options', 1;
    GO
    RECONFIGURE;
    SP_CONFIGURE 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    EXEC sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
  4. Enregistrer msexcl40.dll :

    regsvr32 C:\Windows\SysWOW64\msexcl40.dll

Supplémentaire Remarques :

  • Pour SQL Server 2014 et versions ultérieures, utilisez « DynamicParameters » au lieu de « DynamicParam » dans la commande EXEC sp_MSset_oledb_prop.
  • Assurez-vous que l'utilisateur exécutant la requête dispose des privilèges nécessaires, tels que « IMPERSONATE » et "ALTER TOUT SERVEUR LIÉ."
  • Si Vous rencontrez toujours des problèmes, vérifiez si « MessageBoxText » est défini sur « 3 » dans le gestionnaire de configuration SQL Server sous « Paramètres du fournisseur OLE DB ».

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn