SQL Server Management Studio 18 не открывается (появляется только заставка)

105

Я только что установил SSMS 18 GA на компьютер, на котором установлена ​​только VS2019, и когда я пытаюсь открыть SSMS, появится всплывающее окно, но затем процесс завершается.

Запуск ssms с -logпараметром выдает сообщение об ошибке:

Сбой CreateInstance для пакета [Пакет планировщика задач] Источник: «mscorlib» Описание: Не удалось загрузить файл или сборку «Microsoft.VisualStudio.Shell.Interop.8.0, Версия = 15.0.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» или один из его зависимости. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) System.IO.FileLoadException: не удалось загрузить файл или сборку 'Microsoft.VisualStudio.Shell.Interop.8.0, версия = 15.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a' или одну из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Имя файла: 'Microsoft.VisualStudio.Shell.Interop.8.0, версия = 15.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: не удалось загрузить файл или сборку' Microsoft.VisualStudio.Shell.Interop.8.0, версия = 8.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a 'или одна из ее зависимостей , Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Имя файла: 'Microsoft.VisualStudio.Shell.Interop.8.0, версия = 8.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'

WRN: регистрация привязки сборки выключена. Чтобы включить ведение журнала ошибок привязки сборки, установите для параметра реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) значение 1. Примечание. С журналированием ошибок привязки сборки связано некоторое снижение производительности. Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

в System.Reflection.RuntimeAssembly.GetType (сборка RuntimeAssembly, имя строки, логическое значение throwOnError, логическое значение ignoreCase, тип ObjectHandleOnStack) в System.Reflection.RuntimeAssembly.GetType (имя строки, Boolean throwOnErereCateCateCaseEntleClectionLectionCanClectionLectionClectionNeleClectionLeClection at atCore), Boolean assemblyString, String typeName, Boolean ignoreCase, BindingFlags bindingAttr, Binder Binder, Object [] args, CultureInfo culture, Object [] активацияAttributes, доказательство securityInfo, StackCrawlMark & ​​stackMark) в System.Activator.CreateInstance (String assemblyName, тип String Assembly.ame, тип String. .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: не удалось загрузить файл или сборку 'Microsoft.VisualStudio.Shell.Interop.8.0, версия = 8.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040) Имя файла: 'Microsoft.VisualStudio.Shell.Interop.8.0, версия = 8.0.0.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a'

WRN: регистрация привязки сборки выключена. Чтобы включить ведение журнала ошибок привязки сборки, установите для параметра реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) значение 1. Примечание. С журналированием ошибок привязки сборки связано некоторое снижение производительности. Чтобы отключить эту функцию, удалите значение реестра [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Я попытался запустить «Ремонт» на SSMS, и попытался восстановить C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, но проблема остается.

Митч
источник
1
Файл журнала генерируется путем добавления -logпараметра. Например:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Митч
1
Вы также можете получить журнал из C: \ Users (пользователь) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml без использования ключа -log
Стефан

Ответы:

125

Я только что наложил на Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesкопию, ..\PrivateAssemblies\Interopи IDE открывается. (Спасибо Митчу за обнаружение оскорбительного имени DLL.)

Сегодня это похоже на популярный вопрос и ответ, поэтому я рад, что это был не только я.

отметка
источник
Для меня была дополнительная Microsoft.VisualStudio.Shell.Interop.8.0папка для копирования.
Андез
Работал как шарм и спасатель. Благодарю.
HartleySan
Работал на меня. Скопируйте из \ PrivateAssemblies в \ PublicAssemblies.
Hairgami_Master
65

Как рекомендует Ронан Арили , было опубликовано официальное решение, в котором рекомендуется удалить строку из ssms.exe.config.

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

Если вы использовали мое предыдущее решение по добавлению сборки в GAC, вам, вероятно, следует удалить его, выполнив:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Митч
источник
1
Любая версия gacutilдолжна быть в порядке. Или вы можете использовать,powershell если у вас не установлена ​​версия SDK.
Митч
1
Люблю StackExchange за это. Полностью работал для меня.
Мэтт ниндзя
Хорошо
Откуда ты это знаешь, чувак ???? Спасибо!
Разработчик
29

Это известная проблема, и существует новый официальный обходной путь, опубликованный командой разработчиков SSMS.

Вы можете просмотреть открытый тикет в системе обратной связи Microsoft по следующей ссылке: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Краткая история:

Первый обходной путь, который был представлен, состоял в том, чтобы скопировать файл:Microsoft.VisualStudio.Shell.Interop.8.0.dll

из каталога: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

в каталог: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Позже было опубликовано более сфокусированное решение (именно это я и использовал): просто удалите файлC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Во всяком случае, несколько дней назад команда опубликовала обновление, как вы можете видеть по ссылке выше. Это цитата из официального обновленного ответа:

Рекомендуемое временное решение:

1) Закройте все экземпляры SSMS

2) Отредактируйте ssms.exe.config

3) Удалите строку, которая имеет следующий текст (должна быть строка 38): NgenBind_OptimizeNonGac enabled = «1»

Это то же самое изменение, которое будет в следующей версии SSMS 18.x

Запись! расположение файла ssms.exe.config находится в папке:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ронен Арили
источник
1
Это должен быть одобренный обходной путь.
Омциг
Да, это должно быть @Omzig, но по какой-то причине он даже не набрал максимальное количество голосов😃
Ронен
1
Правильный обход .. !! Спасибо, это исправило проблему.
Мохамед Айас
Добро пожаловать @MohamedAyas 😃
Ронен
У меня есть SQL Management Studio 2014, но у меня нет такой папки. Файл ssms.exe.config находится по адресу C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... и содержимое не имеет ничего общего с упомянутым здесь. Любая помощь, пожалуйста?
jstuardo
1

Я только что столкнулся с той же проблемой на недавно построенном Server 2016 с SQL Server 2017 и SSMS 18.0, однако он исчез после 2 перезагрузок, во время которых сервер был полностью исправлен мартовскими исправлениями O / S 2019 года. Я попытаюсь провести еще какое-то тестирование, чтобы выяснить, действительно ли патчи O / S помогают в этом, но я пока ничего не знаю об установке на этом сервере.

Это кажется более случайным после перезагрузок, но сейчас я заметил, что SSMS работает сразу после установки, но затем SCCM в моей организации начинает устанавливать разные вещи, и SSMS перестает работать. Теперь подозреваемым является «.NET Framework 3.5 Server Feature 2016»

М. Стшелецкий
источник
0

Есть еще одно решение этой проблемы. Что касается элемента обратной связи Azure, SQL Server Management Studio 18 GA (15.0.18118.0) не совместим с .NET Framework 4.8. Автор Erich Signer предлагает:

Шаг 1:

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

Переименуйте и убедитесь, что этот файл больше не имеет .pkgdefрасширения. Или удалите файл.

Шаг 2:

Удалите следующий ключ реестра (который создается при запуске SSMS 18 с помощью файла «.pkgdef», упомянутого выше):

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

На основании комментария, первоначально оставленного omzig

user126897
источник
0

Я столкнулся с той же проблемой, и после некоторого поиска этой проблемы я нашел следующую пошаговую статью, посвященную этой проблеме:

Предоставленное решение:

Скопируйте файл PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (файл с версией сборки 15.0.0.0) в папку PublicAssemblies.

Шаги были следующие:

  • Во-первых, в качестве меры предосторожности автор переименовал существующее PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllв другое, на тот случай, если мне понадобится этот файл позже.
  • Затем он скопировал Microsoft.VisualStudio.Shell.Interop.8.0.dllфайл PrivateAssemblies\Interopв PublicAssembliesпапку.

После этого изменения SSMS загружается без каких-либо проблем.

Хади
источник