Студія управління SQL Server 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, Version = 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 = b03f5f7f11d50a3 . Маніфестне визначення розташованої збірки не відповідає посиланням на збірку. (Виняток від 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 Assembly, ім’я струни, Boolean bacOnError, Boolean ignoreCase, ObjectHandleOnStack типу) у System.Reflection.RuntimeAssembly.GetType (String name, Boele.Cam.Ant.En.En. AssemblyString, String typeName, Boolean ignoreCase, BindingFlagsindingAttr, Binder binder, Object [] аргументи, культураInfo культура, об'єкт [] активаціяAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) у System.Activator.CreateInstance (тип String AssemblyName) (String AssemblyName .CreateInstance (String AssemblyName, String typeName)

System.IO.FileLoadException: Не вдалося завантажити файл або збірку 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = нейтральна, 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
Stephane

Відповіді:


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
Love 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 увімкнено = "1"

Це та сама зміна, яка буде в наступному випуску SSMS 18.x

Примітка! розташування файлу ssms.exe.config знаходиться в папці:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE


1
Це має бути затверджене рішення.
Омзіг

Ви повинні @Omzig, але чомусь навіть не отримали максимальну кількість голосів😃
Ronen Ariely

1
Правильне вирішення .. !! Танс товариш, це вирішило проблему.
Мохамед Айяс

Вас вітають @MohamedAyas 😃
Ronen Ariely

У мене є SQL Management Studio 2014, але у мене немає такої папки. ssms.exe.config знаходиться на C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... і вміст не має нічого спільного із згаданим тут. Будь-яку допомогу, будь ласка?
jstuardo

1

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

Це здається більш випадковим після перезавантаження, але те, що я помітив зараз, - це те, що SSMS працює відразу після встановлення, але потім SCCM в моєму органі починає встановлювати різні речі і SSMS перестає працювати. Тепер підозрюваним є ".NET Framework 3.5 Feature Server 2016"


0

Є ще одне рішення цієї проблеми. У пункті зворотного зв’язку Azure SQL Server Management Studio 18 GA (15.0.18118.0) не сумісний з .NET Framework 4.8 Еріх Сигнер пропонує:

Крок 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


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 завантажується без жодних проблем.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.