Non so cosa sia successo, ma all'improvviso il mio SQL Server Management Studio Express ha cominciato a fare i capricci ed ogni volta che tentavo di navigare all'interno di una registrazione SQL Server 2005, ad esempio espandendo il nodo Databases, Security o qualunque altro, il seguente messaggio d'errore compariva a video:
Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.VisualStudio.OLE.Interop.IServiceProvider'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{6D5140C1-7436-11CE-8034-00AA006009FA}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). Il servizio SQL Server 2005 sembrava funzionare, anche perchè attraverso le query era possibile eseguire qualsiasi comando od operazione. Il problema era solo sull'utility grafica.
Ovviamente anche disintallando e reinstallando SQL Server 2005 non ho ottenuto nessun beneficio.
Fortunatamente navigando in rete sono riuscito a trovare questa discussione su un
forum Microsoft che indicava come probabile causa il fatto che l'oggetto COM IServiceProvider non fosse registarto sul sistema.
La soluzione proposta è stata quella di copiare in un file
.REG le seguenti righe prelevate da un registro di configurazione di una macchina "sana" ed eseguire il file stesso (ottenendo quindi il merge dei dati) sul sistema "malato".
Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}]
@="IServiceProvider"[HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\NumMethods]
@="4"[HKEY_CLASSES_ROOT\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\ProxyStubClsid32]
@="{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}"[HKEY_CURRENT_USER\Software\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}]
@="IServiceProvider"[HKEY_CURRENT_USER\Software\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\NumMethods]
@="4"[HKEY_CURRENT_USER\Software\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\ProxyStubClsid32]
@="{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}]
@="IServiceProvider"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\NumMethods]
@="4"[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Interface\{6D5140C1-7436-11CE-8034-00AA006009FA}\ProxyStubClsid32]
@="{B8DA6310-E19B-11D0-933C-00A0C90DCAA9}" Effettivamente tutto è tornato a funzionare alla meraviglia, anche se, per completezza di informazione, è giusto riportare che l'operazione precedente potrebbe anche non dare risultati apprezzabili.
In tal caso sarà necessario re-registrare il file
actxprxy.dll (contenuto nella cartella system32\) attraverso il programma
regsvr32 (
regsvr32 c:\windows\system32\actxprxy.dll)
La causa del problema, in questa circostanza, sarebbe l'errato percorso della DLL nella chiave di registro di InProcServer.
Purtroppo non emerge nessuna ipotesi che spieghi cosa abbia causato il problema.