Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Le fournisseur OLE DB Microsoft.ACE.OLEDB.12.0 pour le serveur lié (null) a renvoyé le message Le signet n'est pas valide.

Après de nombreuses difficultés avec ce problème, j'ai trouvé la solution suivante :

  1. Sur les serveurs et les machines 64 bits, vous devez d'abord DÉSINSTALLER toutes les applications et instances Microsoft Office 32 bits (installation Access 2007, Office 10 32 bits, etc.). Si vous ne le faites pas, vous ne pouvez pas installer les nouveaux composants redistribuables du moteur de base de données Microsoft Access 2010 64 bits. Oui, c'est un casse-tête, mais le seul moyen que j'ai trouvé pour installer les nouveaux composants de remplacement des composants du moteur JET qui doivent fonctionner sur des machines 64 bits.
  2. Téléchargez et installez le nouveau composant de Microsoft :http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c06b8369-60dd-4b64-a44b-84b371ede16d&displaylang=en
    • Cela installera l'accès et les autres moteurs dont vous avez besoin pour configurer les serveurs liés, les fichiers Excel OPENROWSET, etc.
  3. Ouvrez SQL Server et exécutez ce qui suit :

    sp_configure 'show advanced options', 1;
    GO
    RECONFIGURE;
    GO
    sp_configure 'Ad Hoc Distributed Queries', 1;
    GO
    RECONFIGURE;
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1
    GO
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
    GO
    
    • Cela définit les paramètres nécessaires pour accéder et exécuter des requêtes liées aux composants. Adresse 'nulle
  4. Désormais, si vous exécutez des appels OPENROWSET, vous devez abandonner les appels effectués à l'aide des anciens paramètres JET et utiliser les nouveaux appels comme suit :

    (*Example, importing an EXCEL file directly into SQL):
    DONT DO THIS….
    SELECT * FROM OPENROWSET('Microsoft.Jet.OLEDB.4.0','Excel 8.0;HDR=YES;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    USE THIS INSTEAD…
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 12.0;Database=c:\PATH_TO_YOUR_EXCEL_FILE.xls','select * from [sheet1$]')
    
    *At this point resolved two SQL issues and ran perfectly
    
  5. Maintenant, pour la partie amusante…..trouver tous vos disques Office et réinstaller Office et/ou les applications nécessaires sur la machine. Vous pouvez installer la version 64 bits d'Office 10 en accédant au disque, en accédant au dossier 64 bits et en l'exécutant, mais attention, dans certains cas, certaines applications tierces ne s'interfacent pas encore avec cette version d'Office.