Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Excel Datei über OPENROWSET öffnen

Dieses Thema im Forum "Microsoft SQL Server" wurde erstellt von ukulele, 29 April 2013.

  1. ukulele

    ukulele Datenbank-Guru

    Eigentlich sollte das ja funktionieren, eigentlich.

    Folgenden Befehl bringe ich auf einem Windows 2003 R2 Server 32 Bit mit MS SQL 2005 Express zum laufen, auf Windows 2008 R2 Server 64 Bit mit MS SQL 2012 Express aber nicht:

    Code:
    SELECT    *
    FROM    OPENROWSET('Microsoft.Jet.OLEDB.4.0',
            'Excel 8.0;HDR=YES;Database=D:\2012.xls',
            'select * from [asdf$]');
    Meldung 7302, Ebene 16, Status 1, Zeile 1
    Eine Instanz des OLE DB-Anbieters 'Microsoft.Jet.OLEDB.4.0' für den Verbindungsserver '(null)' kann nicht erstellt werden.

    Auf beiden Systemen ist kein Excel installiert, auf dem neuem aber OpenOffice, auch wenn das nichts damit zu tun haben sollte. Die Datei ist nicht geöffnet, sp_configure habe ich durchgeführt. Überhaupt habe ich allerhand ausprobiert was auch hier steht: http://www.experts-exchange.com/Mic...rieving-Data-From-Excel-Using-OPENROWSET.html

    Hat noch jemand Anregungen?
     
  2. Tommi

    Tommi Datenbank-Guru

    Hi,

    ich habe noch nicht viel mit SQL Server 2012 gearbeitet (kommt erst noch), aber unterstützt dieser überhaupt noch Jet 4.0?
    Hast du mal nachgeschaut, ob der Anbieter für diesen Zugriffstreiber überhaupt auf dem SQL Server angeboten wird bzw. installiert ist?

    Viele Grüße,
    Tommi
     
  3. Tommi

    Tommi Datenbank-Guru

  4. ukulele

    ukulele Datenbank-Guru

    Laut MS ist der standardmäßig installiert, man kann ihn auch nicht sperat downloaden. http://support.microsoft.com/kb/239114

    Ich habe mir auch die Version der dll Datei angeschaut, das sieht gut aus.
     
  5. Tommi

    Tommi Datenbank-Guru

    Irgendwo scheint der SQL Server aber einen Teil des Ausdrucks als Verbindungsserver-Angabe zu interpretieren.
    In den Beispielen auf der MSDN wird auch der Pfad zur Datei anders angegeben. Vielleicht hängt das daran (?-> Gleichheitszeichen im Ausdruck)

    Hier ist nochmal der Link zur Beschreibung des OPENROWSET-Befehls (T-SQL 2012)
    http://msdn.microsoft.com/de-de/library/ms190312.aspx

    Da sind ganz unten Beispiele für Access angegeben, aber die sollten ja auch für Excel gelten.
    Vielleicht versuchts du es mal mit einer ganz einfachen Version des Ausdrucks, wie in den Beispielen angegeben.
     
  6. ukulele

    ukulele Datenbank-Guru

    Bei Access hängt noch Benutzername und PW mit drin. Ich habe auch schon verschiedene Schreibweisen getestet, siehe hier: http://support.microsoft.com/kb/321686/de
    Aber irgendwie geht es ja auf meinem alten System nur nicht auf dem neuen :(
     
  7. Tommi

    Tommi Datenbank-Guru

    Hi,

    ich habe hierzu noch was gefunden:

    The SQL Server Error Message if a user have no rights for SQL Server TEMP directory

    OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)" returned message "Unspecified error".
    Msg 7303, Level 16, State 1, Line 1
    Cannot initialize the data source object of OLE DB provider "Microsoft.Jet.OLEDB.4.0" for linked server "(null)".
     
  8. ukulele

    ukulele Datenbank-Guru

    Ich bin als Sa angemeldet, der sollte die Rechte haben.
     
  9. Tommi

    Tommi Datenbank-Guru

    ukulele gefällt das.
  10. ukulele

    ukulele Datenbank-Guru

    Also der Link http://www.excel-sql-server.com/excel-import-to-sql-server-using-distributed-queries.htm hat mir schonmal geholfen. Ich hatte nicht bedacht das der SQL Server auch 64 Bit ist, ich also auch für Excel 2003 Dateien die OLEDB 12 Erweiterung nehmen muss! Außerdem habe ich noch AccessDatabaseEngine_X64 wie beschrieben installieren müssen.

    Komisch ist auch, das er mit Leerschritten im Datenblattnamen offensichtlich ein Problem hat. Auf meinem alten SQL Server klappt das problemlos, auf dem neuen unter OLEDB 12 behauptet er, es gäbe das Datenblatt nicht.
    Code:
    SELECT * FROM OPENROWSET('Microsoft.ACE.OLEDB.12.0',
      'Excel 12.0;Database=D:\2013.xls', [Sheet Caption$])
     
  11. ukulele

    ukulele Datenbank-Guru

    Ich hatte das Thema grade wieder auf einem neuen Server (MS 2012 R2 64 Bit, SQL Express 2014 64 Bit, Office 2013 Standard 32 Bit) und kann ergänzend sagen:

    Neustart nach Installation Microsoft Access database engine 2010 (English)
    Code:
    EXEC sp_configure 'Ad Hoc Distributed Queries', 1
    GO
    RECONFIGURE WITH OVERRIDE
    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
    RECONFIGURE WITH OVERRIDE
    GO
    haben bei mir das ganze offensichtlich erst zum Laufen gebracht.
    Quelle: Reading Access 2010 .mdb files from SQL Server directly - elbsolutions.com Project List & Blog

    Das ganze Thema ist echt ein Grauss.
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden