Von einem Kunden wurde ich kürzlich gefragt, warum sich sein Visual Studio nach der Validierung der Pakete mit folgender Fehlermeldung schließt:
TITLE: Microsoft Visual Studio
Das COM-Objekt des Typs „System.__ComObject“ kann nicht in den Schnittstellentyp „Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100“ umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID „{…}“ aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Eine Schnittstelle, die für einen anderen Thread marshalled war, wurde von der Anwendung aufgerufen. (Ausnahme von HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)).
Zunächst bin ich der Beschreibung in diesem Thread nachgegangen, was allerdings den Fehler nicht behoben hatte. Eine Ausweitung der Suche hat mich dann zu diesem Eintrag geführt.
Kurz zusammengefasst was zur Beseitigung der Fehlermeldung geführt hat:
Scheinbar hat die nicht registrierte dts.dll den Fehler verursacht. Das kann zum Beispiel durch die Installation oder Deinstallation von Systemupdates oder dem .NET Framework geschehen.
Um den Fehler zu beheben kann man laut dem Forumseintrag wie folgt vorgehen:
- Eingabeaufforderung öffnen
- Zum Verzeichnis C:\Program Files\Microsoft SQL Server\120\DTS\Binn (die Version des Servers (90 für 2005, 100 für 2008 und 2008R2, 110 für 2012 und 120 für 2014) beachten und ob es sich um die 32- oder 64-bit Variante des Servers handelt) wechseln
- regsvr32 dts.dll ausführen
Die exe dient dazu, DLLs und Activex-Steuerelemente in der Windows-Registrierung zu registrieren und deren Registrierung aufzuheben. Mehr erfahrt Ihr hier.
Die englischsprachige Fehlermeldung lautet übrigens folgendermaßen:
Unable to cast COM object of type ‚System.__ComObject‘ to interface type ‚Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSObject100‘. This operation failed because the QueryInterface call on the COM component for the interface with IID ‚{…}‘ failed due to the following error: The application called an interface that was marshalled for a different thread. (Exception from HRESULT: 0x8001010E (RPC_E_WRONG_THREAD)).
Viel Erfolg beim Debuggen.