wie Sie herausfinden, welche ole-provider für SQL Server 2008?

Ich versuche, Zugriff auf eine Excel-Datei in MSMS. Nach der Suche im internet, ich konnte es nicht funktioniert.

Hier ist was ich getan habe:

Meine Umgebung:

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. Versuchen zu ändern, config für OLE wie:

    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. Abfrage ausführen:

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

    oder

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

Beiden Fällen bekam ich eine Fehlermeldung wie:

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.

oder

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.

Dann überprüfte ich die verknüpften server auf SQL server, und es sind 10 Anbieter standardmäßig durch run-system-sp:

EXEC master.dbo.sp_MSset_oledb_prop 

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

Wie dieses problem zu beheben?
Wie weiß ich, ob MICROSOFT.ACE.OLEDB.12.0 oder MICROSOFT.JET.OLEDB.4.0 ist verfügbar für SQL Server?

OLE DB 4.0 ist nicht kompatibel mit 64 bit. Welche version AccessDatabaseEngine Sie verwenden?
Ich benutzt Office 2010 32bit. dann wechselte ich zu Office 2010 64bit, es scheint, die Arbeit mit excel-xls-Datei wie: select * from OPENROWSET('Microsoft.Ass.OLEDB.12.0', 'Excel 8.0;Database=C:\Temp\Test.xls;', 'SELECT * FROM [Location1$]'). Aber es funktioniert nicht mit excel-xlsx-Datei-wie: select * from OPENROWSET('Microsoft.Ass.OLEDB.12.0', 'Excel 9.0;Database=C:\Temp\Test.xlsx;', 'SELECT * FROM [Location1$]'). Wie es funktioniert mit xsls-Datei? was ist die richtige syntax für OpenRowSet für diesen Fall?

InformationsquelleAutor KentZhou | 2013-03-15

Schreibe einen Kommentar