Vor kurzem bin ich über ein kleines, lästiges Problem mit dem SQL Server 2012 gestolpert. Beim simplen Import einer Excel-Tabelle in einen SQL Server 2012 konnte die Aktion nicht durchgeführt werden. Stattdessen folgt eine Fehlermeldung “Microsoft.ACE.OLEDB.12.0-Provider fehlt” des SQL Server-Import/Export-Assistenten.

Doch schön der Reihe nach: Das Ziel ist das Importieren von Daten in eine bestehende SQL-Datenbank, die in einer Tabelle in einer Excel 2007-Datei vorliegen.

Tipp: Natürlich kann die SQL-Tabelle “on the fly”-durch den Assistenten automatisch erstellt werden, jedoch - nachdem der Importvorgang mit vielen Feldern manchmal etwas heikel ist - ist (meine) “best practice” die SQL-Zieltabelle VOR dem Import anzulegen, dann gibt's weniger Fehler beim Lauf des Import-Assistenten.

Die eigentliche Vorgangsweise zum Importieren von Daten in den SQL Server funktioniert im SQL Management Studio: Hier wird im Kontextmenü einer Datenbank Tasks/Daten importieren gewählt.

image

Nun wird die Quelldatei – als Datenquelle Microsoft Excel - wie in folgendem Screenshot ausgewählt.

image

Beim Ausführen mit Weiter folgt diese Fehlermeldung:

Der 'Microsoft.ACE.OLEDB.12.0'-Provider ist nicht auf dem lokalen Computer registriert. (System.Data)

Der Import kann nicht weiter ausgeführt werden. Ursache ist das verwendete System, bei mir Windows 8.1 x64 mit installiertem Office 2013 x32. Trotz vorhandenem Office 2013 fehlt anscheinend die erforderliche Bibliothek.

Nach etwas Suchen fand ich eine funktionierende Lösung: Der fehlende Provider kann durch die Installation der “2007 Office System Driver Data Connectivity Components” auf dem lokalen Rechner hinzugefügt werden. Die Tools (auch wenn schon etwas älter) können aus dem Microsoft Download Center bezogen werden.

2007 Office System Driver: Data Connectivity Components

image

Nach dem Download werden die Komponenten installiert:

image

Sofort nach der Fertigstellung klappt es nun mit dem SQL-Wizard, er setzt fort.
Die Excel-Daten können nun wie gewohnt in eine SQL-Tabelle importiert werden.

Ein etwas seltsamer Workaround – aber es funktioniert. Dies ist wahrscheinlich nicht die einzige Lösung, aber wenn jemand in dieses Problem läuft ist dieser Weg eine rasche, praktikable Lösung.