SQL Server Management Studio 18 non si apre (viene visualizzata solo la schermata iniziale)


105

Ho appena installato SSMS 18 GA su un computer con solo VS2019 installato e quando provo ad aprire SSMS viene visualizzata la schermata di avvio, ma il processo termina.

L'esecuzione di SMS con il -logparametro rivela un messaggio di errore:

CreateInstance non riuscito per il pacchetto [Pacchetto Utilità di pianificazione] Origine: 'mscorlib' Descrizione: Impossibile caricare il file o l'assemblaggio 'Microsoft.VisualStudio.Shell.Interop.8.0, Versione = 15.0.0.0, Cultura = neutro, PublicKeyToken = b03f5f7f11d50a3a' o uno di le sue dipendenze. La definizione manifest dell'assembly individuato non corrisponde al riferimento dell'assembly. (Eccezione da HRESULT: 0x80131040) System.IO.FileLoadException: Impossibile caricare il file o l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Versione = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una delle sue dipendenze. La definizione manifest dell'assembly individuato non corrisponde al riferimento dell'assembly. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versione = 15.0.0.0, Cultura = neutro, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: Impossibile caricare il file o l'assembly' Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'o una delle sue dipendenze . La definizione manifest dell'assembly individuato non corrisponde al riferimento dell'assembly. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la registrazione dell'associazione dell'assieme è disattivata. Per abilitare la registrazione degli errori di bind di assembly, impostare il valore del registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) su 1. Nota: è presente una penalità delle prestazioni associata alla registrazione degli errori di bind di assembly. Per disattivare questa funzione, rimuovere il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

at System.Reflection.RuntimeAssembly.GetType (assembly RuntimeAssembly, String name, Boolean throwOnError, Boolean ignoreCase, ObjectHandleOnStack type) su System.Reflection.RuntimeAssembly.GetType (String name, Boolean throwOnError.CreareCreare) assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] activAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) su System.Activator.CreateInstance (String assemblyName, String typeName) su System.AppD .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: impossibile caricare il file o l'assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' o una delle sue dipendenze. La definizione manifest dell'assembly individuato non corrisponde al riferimento dell'assembly. (Eccezione da HRESULT: 0x80131040) Nome file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: la registrazione dell'associazione dell'assieme è disattivata. Per abilitare la registrazione degli errori di bind di assembly, impostare il valore del registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) su 1. Nota: è presente una penalità delle prestazioni associata alla registrazione degli errori di bind di assembly. Per disattivare questa funzione, rimuovere il valore di registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Ho provato a eseguire "Repair" su SSMS e ho provato a riparare C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, ma il problema persiste.


1
Il file di registro viene generato aggiungendo il -logparametro. Ad esempio:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch

1
È possibile ottenere anche il registro da C: \ Users (utente) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml senza utilizzare l'opzione -log
Stephane

Risposte:


125

Ho appena sovrapposto Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliescon la copia da ..\PrivateAssemblies\Interope l'IDE si apre. (Grazie a Mitch per aver scoperto il nome DLL offensivo.)

Sembra una domanda e risposta popolare oggi, quindi sono felice di sapere che non ero solo io.


Per me c'era una Microsoft.VisualStudio.Shell.Interop.8.0cartella aggiuntiva in cui copiare.
Andez,

Ha funzionato come un fascino e un salvavita. Grazie.
Hartley,

Ha funzionato per me. Copia da \ PrivateAssemblies in \ PublicAssemblies.
Hairgami_Master

65

Come consiglia Ronan Ariely , è stata pubblicata una soluzione ufficiale che raccomanda di rimuovere una riga da ssms.exe.config.

In C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe.config:

<?xml version="1.0" encoding="utf-8"?>
<configuration>
    <!-- ...snip... -->
    <runtime>
        <!-- ...snip... -->
        <!-- Remove this line (~line 38) -->
        <NgenBind_OptimizeNonGac enabled="1" />
        <!-- ...snip... -->
    </runtime>
    <!-- ...snip... -->
</configuration>

Se hai eseguito la mia precedente soluzione di aggiunta dell'assembly al GAC, probabilmente dovresti disinstallarlo eseguendo:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a

1
Qualsiasi versione di gacutildovrebbe andare bene. Oppure puoi usarepowershell se non hai installato una versione dell'SDK.
Mitch

1
Adoro StackExchange per questo. Ha funzionato totalmente per me.
Matt The Ninja,

Bello ... questo lavoro per me
Jatin Gadhiya il

Come lo sapevi, amico ???? Grazie!
Sviluppatore

29

Questo è un problema noto e c'è una nuova soluzione ufficiale pubblicata dal team di sviluppatori SSMS.

È possibile visualizzare il ticket aperto sul sistema di feedback Microsoft nel seguente collegamento: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Breve storia:

La prima soluzione alternativa che è stata presentata è stata quella di copiare il file:Microsoft.VisualStudio.Shell.Interop.8.0.dll

dalla directory: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

nella directory: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Successivamente, è stata pubblicata una soluzione più mirata (che è quello che ho usato): rimuovere semplicemente il fileC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Ad ogni modo, diversi giorni fa il team pubblica un aggiornamento come puoi vedere nel link sopra. Questa è una citazione dalla risposta ufficiale aggiornata:

La soluzione alternativa raccomandata, nel frattempo, è:

1) Chiudere tutte le istanze di SSMS

2) Modifica ssms.exe.config

3) Rimuovere la riga con il seguente testo (dovrebbe essere la riga 38): NgenBind_OptimizeNonGac enabled = “1”

Questa è la stessa modifica che sarà nella prossima versione di SSMS 18.x

Nota! il percorso del file ssms.exe.config si trova nella cartella:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE


1
Questa dovrebbe essere la soluzione alternativa approvata.
Omzig,

Sì, dovrebbe essere @Omzig, ma per qualche motivo non ha nemmeno ottenuto il numero massimo di voti😃
Ronen Ariely,

1
Soluzione corretta .. !! Grazie amico, questo ha risolto il problema.
Mohamed Ayas,

Sei il benvenuto @MohamedAyas 😃
Ronen Ariely il

Ho SQL Management Studio 2014 ma non ho una tale cartella. ssms.exe.config è in C: \ Programmi (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... e il contenuto non ha nulla a che fare con il menzionato qui. Qualche aiuto, per favore?
jstuardo,

1

Ho appena superato lo stesso problema su un Server 2016 appena costruito con SQL Server 2017 e SSMS 18.0, tuttavia è andato via dopo 2 riavvii durante i quali il server è stato completamente patchato con patch O / S di marzo 2019. Proverò a fare qualche altro test per capire se sono state davvero le patch O / S ad aiutare questo, ma nel frattempo non sono a conoscenza di nessun'altra installazione su quel server.

Sembra più casuale dopo il riavvio, ma quello che ho notato ora è che SSMS funziona subito dopo l'installazione, ma poi SCCM nella mia organizzazione inizia a installare varie cose e SSMS smette di funzionare. Ora il sospetto è "Funzionalità server .NET Framework 3.5 2016"


0

C'è un'altra soluzione a questo problema. Nell'elemento Feedback di Azure SQL Server Management Studio 18 GA (15.0.18118.0) non compatibile con .NET Framework 4.8 Erich Signer suggerisce:

Passo 1:

C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Rinomina e assicurati che questo file non abbia più l' .pkgdefestensione. Oppure rimuovi il file.

Passo 2:

Rimuovere la seguente chiave di registro (che viene creata all'avvio di SSMS 18 utilizzando il file ".pkgdef" menzionato sopra):

HKEY_CURRENT_USER\SOFTWARE\Microsoft\SQL Server Management Studio\18.0_IsoShell_Config\RuntimeConfiguration\dependentAssembly\bindingRedirection\{8BC7AF31-B6DA-4B97-8B36-F0500DECB147}

Basato su un commento originariamente lasciato da omzig


0

Ho affrontato lo stesso problema e dopo aver cercato per un po 'questo problema, ho trovato il seguente articolo passo-passo che affronta questo problema:

La soluzione fornita è:

Copiare il file PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (quello con la versione assembly 15.0.0.0) nella cartella PublicAssemblies.

I passaggi sono stati i seguenti:

  • Innanzitutto, per precauzione, l'autore ha rinominato l'esistente PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllin qualcos'altro, nel caso avessi bisogno di quel file in seguito.
  • Poi ha copiato il Microsoft.VisualStudio.Shell.Interop.8.0.dllfile dalla PrivateAssemblies\Interopnella PublicAssembliescartella.

Dopo questa modifica, SSMS è stato caricato senza alcun problema.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.