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)
-
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
-
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?
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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für eine Datei mit extention .xlsx-Format verwenden 'Excel 12.0' oder 'Excel 12.0 Xml" anstelle von Excel 9.0
Wenn Sie eine Verbindung zu Microsoft Office Excel-Daten, fügen Sie die entsprechenden Erweiterten Eigenschaften des OLE DB-Verbindungszeichenfolge basierend auf dem Excel-Datei-Typ:
Du bist willkommen;)
Funktioniert nicht in Meinem Fall , Gleiche problem.Haben Sie eine andere Lösung?
Könnten Sie das klären, bitte?Fehler, Ihren provider, etc
Suche über google nach 2 Stunden oder so. Fehler Msg 7308, Ebene 16, Status 1, Zeile 39 OLE-DB-provider 'Microsoft.Ass.OLEDB.12.0' kann nicht verwendet werden, die für verteilte Abfragen, da der Anbieter so konfiguriert ist ausführen, in Singlethread-apartment-Modus.
InformationsquelleAutor Aleksandr Fedorenko