2016-09-16 3 views
0

Ich verwende diesen Code für den Import auf SQL eine Excel in eine SQL-TabelleExcel-Tabelle Fehler Msg 7350

USE master 
GO 
sp_configure 'show advanced options', 1; 

RECONFIGURE; 
GO 

    sp_configure 'Ad Hoc Distributed Queries', 1; 

    RECONFIGURE; 
    GO 

insert into memberform (id) 
    SELECT * FROM OPENROWSET ('Microsoft.Jet.OLEDB.4.0', 'Excel 8.0;Database=C:\\test.xls;HDR=YES', 'select * from [Sheet1$]') 

Aber ich bin immer Fehler Datei:

Msg 7350, Level 16, State 2, Line 1 Cannot get the column information from OLE DB provider "Microsoft.Jet.OLEDB.4.0" >for linked server "(null)".

Gibt es etwas, ich sollte zuerst in SQL parametrisieren?

+0

Docs: "OPENROWSET akzeptiert keine Variablen für seine Argumente." Sie müssen den Schritten in der Nachricht folgen. – Serg

+0

Bitte verwenden Sie keine Leerzeichen im Befehl 'OPENROWSET'! –

Antwort

1

Ich fand die Lösung, ich habe gerade AccessDatabaseEngine_X64 Bit installiert. Ursache Mein sql ist 64 Bit und mein Büro 32 Bit, deshalb hat es nicht funktioniert. Das Problem ist, dass Sie Access Database Engine x64 auf Office 2007 32bit nicht installieren können. Sie benötigen diese Anleitung: https://knowledge.autodesk.com/support/autocad-civil-3d/troubleshooting/caas/sfdcarticles/sfdcarticles/How-to-install-64-bit-Microsoft-Database-Drivers-alongside-32-bit-Microsoft-Office.html

Auch in meinem Code sollte ich Ass statt Jet verwenden.Auch weil ich Excel 2007 verwende, muss ich es zu Excel 12.0 ändern. Wie im Beispiel unten

SELECT * FROM OPENROWSET ('Microsoft.Ace.OLEDB.12.0', 'Excel 12.0;Database=C:\\test.xlsx;HDR=YES', 'select * from [Sheet1$]') 
2

Grundsätzlich Ad hoc Distributed Queries werden standardmäßig in SQL Server aufgrund von Sicherheitskonfiguration deaktiviert und Sie können auch nicht OPENROWSET oder OPENDATASOURCE verwenden und wenn Sie diese rowset Funktionen nicht ausführen können, dann können Sie keine Remote-Datenquellen zugreifen.

Führen Sie die folgenden Abfragen diese Optionen ermöglichen es Ihnen, auf diese ohne weitere Probleme arbeiten zu lassen:

USE master 
GO 
sp_configure 'show advanced options', 1; 

RECONFIGURE; 
GO 

sp_configure 'Ad Hoc Distributed Queries', 1; 

RECONFIGURE; 
GO 

Vom Ausgang, konnte man sehen, dass die „Ad-hoc-verteilte Abfragen“ von 0 auf geänderte Einstellung 1. Jetzt können Sie leicht jedes Ad hoc Query

Hinweis ausführen: Standardmäßig ist diese Option auf 0 gesetzt, und Sie müssen sich ändern Sie ihn auf 1, um diese Funktion zu aktivieren.

Hoffe, das hilft!

+0

Vielen Dank, es funktioniert, aber jetzt bekomme ich zwei Fehler: Msg 7399, Level 16, Status 1, Line 1 Der OLE DB-Provider "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "(null)" meldete einen Fehler. Der Anbieter hat keine Informationen über den Fehler angegeben. Msg 7303, Ebene 16, Status 1, Zeile 1 Das Datenquellenobjekt des OLE DB-Providers "Microsoft.Jet.OLEDB.4.0" für den Verbindungsserver "(null)" kann nicht initialisiert werden. – DiH

+0

Im Allgemeinen treten solche Fehler auf, weil ein falscher Dateiname oder eine falsche Datei nicht verwendet werden kann. Macht es Ihnen etwas aus, Ihre SQL Server-Instanz neu zu starten und dann zu überprüfen, ob sie funktioniert? –

+0

Fehler MSG: Msg 7350, Ebene 16, Status 2, Zeile 1 Kann die Spalteninformation von OLE DB-Anbieter "Microsoft.Jet.OLEDB.4.0"> für Verbindungsserver "(null)" nicht abrufen. – DiH

Verwandte Themen