comment faire pour savoir quelle fournisseur ole disponibles pour SQL Server 2008?

J'essaie d'accéder à un fichier Excel dans MSMS. Après des recherches sur internet, je ne pourrais pas obtenir de travail.

Voici ce que j'ai fait:
Mon environnement:

Windows 7(64bit) SP 1, 
Microsoft SQL Server 2008 (SP3) - 10.0.5500.0 (X64)   
Office 2010 Pro Plus with Access installed(32 bit)
  1. Essayer de changer de config pour OLE comme:
    exec sp_configure 'Advanced', 1
    RECONFIGURE
    
    exec sp_configure 'Ad Hoc Distributed Queries', 1
    RECONFIGURE
    
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'AllowInProcess', 1  
    EXEC master.dbo.sp_MSset_oledb_prop N'Microsoft.ACE.OLEDB.12.0', N'DynamicParameters', 1
  2. Exécuter la requête:
    SELECT * FROM OPENROWSET('MICROSOFT.ACE.OLEDB.12.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

    ou

    SELECT * FROM OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Text;Database=C:\Temp\;','SELECT * FROM [test.csv]')

Pour les deux cas, j'ai un message d'erreur comme:

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.JET.OLEDB.4.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

ou

Msg 7308, Level 16, State 1, Line 1
OLE DB provider 'MICROSOFT.ACE.OLEDB.12.0' cannot be used for distributed queries because the provider is configured to run in single-threaded apartment mode.

Puis j'ai vérifié le serveur lié dans SQL server, et il y a 10 fournisseurs par défaut par le système d'exécution sp:

EXEC master.dbo.sp_MSset_oledb_prop 

SQLOLEDB
MSOLAP
SQLNCLI11
ADsDSOObject
SQLNCLI
SQLNCLI10
Search.CollatorDSO
MSDASQL
MSDAOSP
MSIDXS

Comment résoudre ce problème?
Comment puis-je savoir si MICROSOFT.ACE.OLEDB.12.0 ou MICROSOFT.JET.OLEDB.4.0 est disponible pour SQL Server?

OLE DB 4.0 n'est pas compatible avec la version 64 bits. Quelle est la version AccessDatabaseEngine vous utilisez?
J'ai utilisé Office 2010 32 bits. puis j'ai changé pour Office 2010 64 bits, il semble travailler avec excel xls fichier comme ceci: select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 8.0;Database=C:\Temp\Test.xls;', 'SELECT * from [Location1$]'). Mais il ne fonctionne pas avec excel xlsx fichier comme ceci: select * from OPENROWSET('Microsoft.ACE.OLEDB.12.0', 'Excel 9.0;Database=C:\Temp\Test.xlsx;', 'SELECT * from [Location1$]'). Comment le faire fonctionner avec xsls fichier? quelle est la bonne syntaxe pour OpenRowSet pour ce cas?

OriginalL'auteur KentZhou | 2013-03-15