SQL Server Management Studio 18 nie otwiera się (pojawia się tylko ekran powitalny)

105

Właśnie zainstalowałem SSMS 18 GA na komputerze z zainstalowanym tylko VS2019, a kiedy próbuję otworzyć SSMS, pojawi się ekran powitalny, ale wtedy proces się kończy.

Uruchomienie ssms z -logparametrem ujawnia komunikat o błędzie:

Tworzenie pakietu nie powiodło się dla pakietu [Pakiet harmonogramu zadań] Źródło: „mscorlib” Opis: Nie można załadować pliku lub zestawu „Microsoft.VisualStudio.Shell.Interop.8.0, Wersja = 15.0.0.0, Kultura = neutralny, PublicKeyToken = b03f5f7f11d50a3a” lub jednego z jego zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040) System.IO.FileLoadException: Nie można załadować pliku lub zestawu „Microsoft.VisualStudio.Shell.Interop.8.0, Wersja = 15.0.0.0, Kultura = neutralna, PublicKeyToken = b03f5f7f11d50a3a” lub jednej z jej zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040) Nazwa pliku: „Microsoft.VisualStudio.Shell.Interop.8.0, wersja = 15.0.0.0, kultura = neutralna, PublicKeyToken = b03f5f7f11d50a3a „---> System.IO.FileLoadException: Nie można załadować pliku lub zestawu„ Microsoft.VisualStudio.Shell.Interop.8.0, Wersja = 8.0.0.0, Kultura = neutralny, PublicKeyToken = b03f5f7f11d50a3a ”lub jednej z jego zależności . Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040) Nazwa pliku: „Microsoft.VisualStudio.Shell.Interop.8.0, wersja = 8.0.0.0, kultura = neutralna, PublicKeyToken = b03f5f7f11d50a3a”

WRN: Rejestrowanie powiązania zestawu jest wyłączone. Aby włączyć rejestrowanie niepowodzenia powiązania zestawu, ustaw wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) na 1. Uwaga: Z rejestrowaniem niepowodzenia powiązania zestawu wiąże się pewna utrata wydajności. Aby wyłączyć tę funkcję, usuń wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

w System.Reflection.RuntimeAssembly.GetType (zestaw RuntimeAssembly, nazwa ciągu, typ logiczny throwOnError, typ logiczny ignoreCase, ObjectHandleOnStack) w System.Reflection.RuntimeAssembly.GetType (nazwa łańcuchowa, Boolean throwOnError, Boolean System ignoruje. assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] aktywacjaAtrybuty, Dowody securityInfo, StackCrawlMark & ​​stackMark) w System.Activator.CreateInstance (nazwa zestawu String, nazwa typu ciągu) .CreateInstance (String stringName, String typeName)

System.IO.FileLoadException: Nie można załadować pliku lub zestawu „Microsoft.VisualStudio.Shell.Interop.8.0, Wersja = 8.0.0.0, Kultura = neutralna, PublicKeyToken = b03f5f7f11d50a3a” lub jednej z jej zależności. Definicja manifestu zlokalizowanego zespołu nie pasuje do odwołania do zespołu. (Wyjątek od HRESULT: 0x80131040) Nazwa pliku: „Microsoft.VisualStudio.Shell.Interop.8.0, wersja = 8.0.0.0, kultura = neutralna, PublicKeyToken = b03f5f7f11d50a3a”

WRN: Rejestrowanie powiązania zestawu jest wyłączone. Aby włączyć rejestrowanie niepowodzenia powiązania zestawu, ustaw wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) na 1. Uwaga: Z rejestrowaniem niepowodzenia powiązania zestawu wiąże się pewna utrata wydajności. Aby wyłączyć tę funkcję, usuń wartość rejestru [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Próbowałem uruchomić „Napraw” w SSMS i próbowałem naprawić C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, ale problem nadal występuje.

Mitch
źródło
1
Plik dziennika jest generowany przez dodanie -logparametru. Np .:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch
1
Możesz także pobrać dziennik z C: \ Users (użytkownik) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml bez użycia przełącznika -log
Stephane

Odpowiedzi:

125

Właśnie nałożyłem Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesna kopię z ..\PrivateAssemblies\Interopi IDE otwiera się. (Podziękowania dla Mitcha za wykrycie obrażającej nazwy DLL).

To dziś wygląda na popularne pytanie i odpowiedź, więc cieszę się, że to nie tylko ja.

znak
źródło
Dla mnie był dodatkowy Microsoft.VisualStudio.Shell.Interop.8.0folder do skopiowania.
Andez
Działał jak urok i ratownik. Dzięki.
HartleySan
Pracował dla mnie. Skopiuj z \ PrivateAssemblies do \ PublicAssemblies.
Hairgami_Master
65

Jak zaleca Ronan Ariely , opublikowano oficjalne rozwiązanie, które zaleca usunięcie linii z ssms.exe.config.

W 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>

Jeśli uruchomiłeś moje poprzednie rozwiązanie dodawania zestawu do GAC, prawdopodobnie powinieneś go odinstalować, uruchamiając:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Mitch
źródło
1
Każda wersja gacutilpowinna być w porządku. Lub możesz użyć,powershell jeśli nie masz zainstalowanej wersji zestawu SDK.
Mitch
1
Uwielbiam StackExchange za to. Totally dla mnie pracował.
Matt The Ninja
Fajnie .. ta praca dla mnie
Jatin Gadhiya
Skąd to wiedziałeś, stary ???? Dziękuję Ci!
Deweloper
29

Jest to znany problem i pojawiło się nowe oficjalne obejście opublikowane przez zespół programistów SSMS.

Możesz zobaczyć otwarty bilet w systemie Microsoft Feedback w następującym linku: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Krótka historia:

Pierwszym obejściem tego problemu było skopiowanie pliku:Microsoft.VisualStudio.Shell.Interop.8.0.dll

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

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

Później opublikowano bardziej ukierunkowane rozwiązanie (tego właśnie użyłem): po prostu usuń plikC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

W każdym razie kilka dni temu zespół opublikował aktualizację, jak widać w powyższym linku. Oto cytat z oficjalnej zaktualizowanej odpowiedzi:

Tymczasowo zalecane obejście:

1) Zamknij wszystkie wystąpienia SSMS

2) Edytuj ssms.exe.config

3) Usuń wiersz z następującym tekstem (powinien to być wiersz 38): NgenBind_OptimizeNonGac włączony = „1”

To ta sama zmiana, która będzie w następnym wydaniu SSMS 18.x

Uwaga! lokalizacja pliku ssms.exe.config znajduje się w folderze:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ronen Ariely
źródło
1
To powinno być zatwierdzone obejście.
Omzig
Tak, powinien on @Omzig, ale z jakiegoś powodu nie otrzymał nawet maksymalnej liczby głosów vot
Ronen Ariely
1
Właściwe obejście .. !! Niż kolega, to rozwiązało problem.
Mohamed Ayas
Serdecznie zapraszam @MohamedAyas 😃
Ronen Ariely
Mam SQL Management Studio 2014, ale nie mam takiego folderu. ssms.exe.config znajduje się w C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... a zawartość nie ma nic wspólnego z wymienionymi tutaj. Proszę o pomoc?
jstuardo
1

Właśnie rozwiązałem ten sam problem na świeżo zbudowanym serwerze 2016 z SQL Server 2017 i SSMS 18.0, jednak zniknął po 2 ponownych uruchomieniach, podczas których serwer został w pełni załatany łatami O / S z marca 2019 r. Spróbuję wykonać więcej testów, aby dowiedzieć się, czy to naprawdę łatki O / S pomagają w tym, ale nie jestem świadomy niczego innego instalowanego w międzyczasie na tym serwerze.

Wydaje się bardziej losowy po ponownym uruchomieniu, ale zauważyłem, że SSMS działa zaraz po instalacji, ale potem SCCM w mojej organizacji zaczyna instalować różne rzeczy i SSMS przestaje działać. Teraz podejrzanym jest „.NET Framework 3.5 Server Feature 2016”

M. Strzelecki
źródło
0

Istnieje inne rozwiązanie tego problemu. Na Azure Feedback pozycja SQL Server Management Studio 18 GA (15.0.18118.0) niezgodna z .NET Framework 4.8 Erich Signer sugeruje:

Krok 1:

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

Zmień nazwę i upewnij się, że ten plik nie ma .pkgdefjuż rozszerzenia. Lub usuń plik.

Krok 2:

Usuń następujący klucz rejestru (który jest tworzony podczas uruchamiania SSMS 18 przy użyciu wyżej wspomnianego pliku „.pkgdef”):

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

Na podstawie komentarza pierwotnie pozostawionego przez omzig

użytkownik126897
źródło
0

Napotkałem ten sam problem i po chwili poszukiwania tego problemu znalazłem następujący artykuł krok po kroku dotyczący tego problemu:

Dostarczone rozwiązanie to:

Skopiuj plik PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (ten z wersją zestawu 15.0.0.0) do folderu PublicAssemblies.

Kroki były następujące:

  • Po pierwsze, jako środek ostrożności autor zmienił nazwę istniejącego PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllna coś innego, na wypadek, gdyby później potrzebowałem tego pliku.
  • Następnie skopiował Microsoft.VisualStudio.Shell.Interop.8.0.dllplik PrivateAssemblies\Interopdo PublicAssembliesfolderu.

Po tej zmianie SSMS został załadowany bez żadnych problemów.

Hadi
źródło