SQL Server Management Studio 18 lässt sich nicht öffnen (nur der Begrüßungsbildschirm wird angezeigt)

105

Ich habe gerade SSMS 18 GA auf einem Computer installiert, auf dem nur VS2019 installiert ist. Wenn ich versuche, SSMS zu öffnen, wird der Begrüßungsbildschirm angezeigt, der Vorgang wird jedoch beendet.

Wenn Sie ssms mit dem -logParameter ausführen , wird eine Fehlermeldung angezeigt :

CreateInstance für Paket [Task Scheduler Package] fehlgeschlagen. Quelle: 'mscorlib' Beschreibung: Datei oder Assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine der folgenden konnte nicht geladen werden seine Abhängigkeiten. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) System.IO.FileLoadException: Datei oder Assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) Dateiname: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: Datei oder Assembly' Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a 'oder eine ihrer Abhängigkeiten konnte nicht geladen werden . Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) Dateiname: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Die Protokollierung der Assemblybindung ist deaktiviert. Legen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) auf 1 fest, um die Fehlerprotokollierung für Assemblybindungen zu aktivieren. Entfernen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog], um diese Funktion zu deaktivieren.

bei System.Reflection.RuntimeAssembly.GetType (RuntimeAssembly-Assembly, Zeichenfolgename, Boolescher throwOnError, Boolescher ignoreCase, ObjectHandleOnStack-Typ) bei System.Reflection.RuntimeAssembly.GetType (Zeichenfolgename, Boolescher throwOnError, Booleschrror, Booleschreiben von System ignorieren bei assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Sammelmappe, Object [] args, CultureInfo culture, Object [] activationAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) bei System.Activator.CreateInstance (String assemblyName, String typeName) bei System.A .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: Datei oder Assembly 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a' oder eine ihrer Abhängigkeiten konnte nicht geladen werden. Die Manifestdefinition der gefundenen Assembly stimmt nicht mit der Assemblyreferenz überein. (Ausnahme von HRESULT: 0x80131040) Dateiname: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Kultur = neutral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Die Protokollierung der Assemblybindung ist deaktiviert. Legen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) auf 1 fest, um die Fehlerprotokollierung für Assemblybindungen zu aktivieren. Entfernen Sie den Registrierungswert [HKLM \ Software \ Microsoft \ Fusion! EnableLog], um diese Funktion zu deaktivieren.

Ich habe versucht, "Repair" auf SSMS auszuführen und eine Reparatur von auszuführen C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, aber das Problem besteht weiterhin.

Mitch
quelle
1
Die Protokolldatei wird durch Hinzufügen des -logParameters generiert . ZB:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch
1
Sie können das Protokoll auch über C: \ Users (Benutzer) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml abrufen, ohne die Option -log zu verwenden
Stephane

Antworten:

125

Ich habe gerade die Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesmit der Kopie von überlagert ..\PrivateAssemblies\Interopund die IDE wird geöffnet. (Vielen Dank an Mitch für das Erkennen des fehlerhaften DLL-Namens.)

Das sieht heute nach einer populären Frage und Antwort aus. Ich bin froh zu wissen, dass dies nicht nur ich war.

Kennzeichen
quelle
Für mich gab es einen zusätzlichen Microsoft.VisualStudio.Shell.Interop.8.0Ordner zum Kopieren.
Andez
Arbeitete wie ein Zauber und ein Lebensretter. Vielen Dank.
HartleySan
Hat für mich gearbeitet. Kopieren Sie aus \ PrivateAssemblies in \ PublicAssemblies.
Hairgami_Master
65

Wie Ronan Ariely empfiehlt , wurde eine offizielle Lösung veröffentlicht, die das Entfernen einer Zeile aus empfiehlt 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>

Wenn Sie meine vorherige Lösung zum Hinzufügen der Assembly zum GAC ausgeführt haben, sollten Sie sie wahrscheinlich deinstallieren, indem Sie Folgendes ausführen:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Mitch
quelle
1
Jede Version von gacutilsollte in Ordnung sein. Oder Sie verwenden könnenpowershell , wenn Sie nicht installiert ist, eine Version des SDK.
Mitch
1
Liebe StackExchange dafür. Total für mich gearbeitet.
Matt The Ninja
Schön .. diese Arbeit für mich
Jatin Gadhiya
Woher wusstest du das, Mann ???? Danke!
Entwickler
29

Dies ist ein bekanntes Problem, und es gibt eine neue offizielle Problemumgehung, die vom SSMS-Entwicklerteam veröffentlicht wurde.

Sie können das offene Ticket im Microsoft-Feedbacksystem unter folgendem Link anzeigen: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Kurzgeschichte:

Die erste Problemumgehung, die vorgestellt wurde, war das Kopieren der Datei:Microsoft.VisualStudio.Shell.Interop.8.0.dll

aus dem Verzeichnis: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

in das Verzeichnis: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Später wurde eine gezieltere Lösung veröffentlicht (was ich auch verwendet habe): Entfernen Sie einfach die DateiC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Jedenfalls hat das Team vor einigen Tagen ein Update veröffentlicht, wie Sie im obigen Link sehen können. Dies ist ein Zitat aus der offiziellen aktualisierten Antwort:

Die empfohlene Problemumgehung lautet in der Zwischenzeit:

1) Schließen Sie alle SSMS-Instanzen

2) Bearbeiten Sie die Datei ssms.exe.config

3) Entfernen Sie die Zeile mit dem folgenden Text (sollte Zeile 38 sein): NgenBind_OptimizeNonGac enabled = "1"

Dies ist die gleiche Änderung, die auch in der nächsten Version von SSMS 18.x vorgenommen wird

Hinweis! Der Speicherort der Datei ssms.exe.config befindet sich im Ordner:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ronen Ariely
quelle
1
Dies sollte die genehmigte Problemumgehung sein.
Omzig
Yous es sollte @Omzig, aber aus irgendeinem Grund hat es nicht einmal die maximale Anzahl an Abstimmungen bekommen
Ronen Ariely
1
Richtige Problemumgehung .. !! Als Kumpel hat dies das Problem behoben.
Mohamed Ayas
Sie sind herzlich willkommen @MohamedAyas 😃
Ronen Ariely
Ich habe SQL Management Studio 2014, aber keinen solchen Ordner. ssms.exe.config befindet sich unter C: \ Programme (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... und der Inhalt hat nichts mit dem hier erwähnten zu tun. Hilfe, bitte?
Jstuardo
1

Ich habe gerade dasselbe Problem auf einem neu erstellten Server 2016 mit SQL Server 2017 und SSMS 18.0 behoben, es verschwand jedoch nach zwei Neustarts, bei denen der Server mit den Betriebssystem-Patches vom März 2019 vollständig gepatcht wurde. Ich werde versuchen, weitere Tests durchzuführen, um herauszufinden, ob es wirklich die O / S-Patches waren, die dazu beigetragen haben, aber mir ist nichts anderes bekannt, das in der Zwischenzeit auf diesem Server installiert wurde.

Nach einem Neustart scheint es zufälliger zu sein, aber jetzt ist mir aufgefallen, dass SSMS direkt nach der Installation funktioniert. Dann beginnt SCCM in meiner Organisation mit der Installation verschiedener Dinge und SSMS funktioniert nicht mehr. Der Verdächtige ist jetzt ".NET Framework 3.5 Server Feature 2016"

M. Strzelecki
quelle
0

Es gibt eine andere Lösung für dieses Problem. Für das Azure Feedback-Objekt SQL Server Management Studio 18 GA (15.0.18118.0), das nicht mit .NET Framework 4.8 kompatibel ist, schlägt Erich Signer Folgendes vor:

Schritt 1:

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

Benennen Sie die Datei um und stellen Sie sicher, dass sie nicht mehr die .pkgdefErweiterung hat. Oder entfernen Sie die Datei.

Schritt 2:

Entfernen Sie den folgenden Registrierungsschlüssel (der beim Starten von SSMS 18 mithilfe der oben genannten Datei ".pkgdef" erstellt wird):

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

Gestützt auf einen Kommentar von omzig

user126897
quelle
0

Ich hatte das gleiche Problem und nachdem ich eine Weile nach diesem Problem gesucht hatte, fand ich den folgenden Artikel mit schrittweisen Anleitungen, der sich mit diesem Problem befasste:

Die Lösung lautet:

Kopieren Sie die Datei PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (die mit Assembly-Version 15.0.0.0) in den Ordner PublicAssemblies.

Die Schritte waren die folgenden:

  • Als Vorsichtsmaßnahme hat der Autor die vorhandene PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllDatei in eine andere umbenannt, für den Fall, dass ich sie später benötige.
  • Dann kopierte er die Microsoft.VisualStudio.Shell.Interop.8.0.dllDatei von PrivateAssemblies\Interopin den PublicAssembliesOrdner.

Nach dieser Änderung wurde das SSMS problemlos geladen.

Hadi
quelle