SQL Server Management Studio 18 tidak akan terbuka (hanya layar splash yang muncul)

105

Saya baru saja menginstal SSMS 18 GA pada komputer dengan hanya VS2019 yang diinstal, dan ketika saya mencoba membuka SSMS layar splash akan muncul, tetapi kemudian proses keluar.

Menjalankan ssms dengan -logparameter akan menampilkan pesan kesalahan:

CreateInstance gagal untuk paket [Paket Penjadwal Tugas] Sumber: 'mscorlib' Keterangan: Tidak dapat memuat file atau rakitan 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 15.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dari ketergantungannya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040) System.IO.FileLoadException: Tidak dapat memuat file atau rakitan 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 15.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dari dependensinya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040) Nama file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 15.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: Tidak dapat memuat file atau rakitan' Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 8.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a atau salah satu dependensinya . Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040) Nama file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 8.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: logging yang mengikat perakitan dimatikan. Untuk mengaktifkan logging kegagalan ikatan bind, atur nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) ke 1. Catatan: Ada beberapa penalti kinerja yang terkait dengan logging kegagalan bind rakitan. Untuk mematikan fitur ini, hapus nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

di System.Reflection.RuntimeAssembly.Tertarik Ketik (RuntimeAssembly assembly, nama String, Boolean throwOnError, Boolean diabaikanCase, ObjectHandleOnStack type) di System.Reflection.RuntimeAssembly.GetType (nama String, Boolean throwOnCo assemblyString, String typeName, Boolean diabaikanCase, BindingFlags bindingAttr, Binder binder, Object [] args, CultureInfo culture, Object [] aktivasiAttributes, Evidence securityInfo, StackCrawlMark & ​​stackMark) di System.Activator.CreateInstance (String assemblyName, String nameName, String nameName), .CiptakanateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: Tidak dapat memuat file atau rakitan 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 8.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a' atau salah satu dari ketergantungannya. Definisi manifes rakitan yang ditemukan tidak cocok dengan rujukan rakitan. (Pengecualian dari HRESULT: 0x80131040) Nama file: 'Microsoft.VisualStudio.Shell.Interop.8.0, Versi = 8.0.0.0, Budaya = netral, PublicKeyToken = b03f5f7f11d50a3a'

WRN: logging yang mengikat perakitan dimatikan. Untuk mengaktifkan logging kegagalan ikatan bind, atur nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) ke 1. Catatan: Ada beberapa penalti kinerja yang terkait dengan logging kegagalan bind rakitan. Untuk mematikan fitur ini, hapus nilai registri [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Saya mencoba menjalankan "Perbaikan" pada SSMS, dan mencoba perbaikan C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msi, tetapi masalahnya tetap ada.

Mitch
sumber
1
File log dihasilkan dengan menambahkan -logparameter. Contoh:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch
1
Anda juga bisa mendapatkan log dari C: \ Users (pengguna) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml tanpa menggunakan -log switch
Stephane

Jawaban:

125

Saya hanya overlay Microsoft.VisualStudio.Shell.Interop.8.0.dll C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesdengan salinan dari ..\PrivateAssemblies\Interopdan IDE terbuka. (Terima kasih kepada Mitch untuk menemukan nama DLL yang menyinggung.)

Ini terlihat seperti tanya jawab populer hari ini, jadi saya senang mengetahui ini bukan hanya saya.

Menandai
sumber
Bagi saya ada Microsoft.VisualStudio.Shell.Interop.8.0folder tambahan untuk disalin.
Andez
Bekerja seperti pesona dan penyelamat. Terima kasih.
HartleySan
Bekerja untukku. Salin dari \ PrivateAssemblies ke \ PublicAssemblies.
Hairgami_Master
65

Seperti yang direkomendasikan Ronan Ariely , solusi resmi telah diterbitkan yang merekomendasikan untuk menghapus batas ssms.exe.config.

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

Jika Anda menjalankan solusi saya sebelumnya untuk menambahkan unit ke GAC, Anda mungkin harus menghapus instalannya dengan menjalankan:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a
Mitch
sumber
1
Versi gacutilapa pun harus baik-baik saja. Atau Anda dapat menggunakanpowershell jika Anda tidak memiliki versi SDK yang diinstal.
Mitch
1
Love StackExchange untuk ini. Benar-benar bekerja untuk saya.
Matt The Ninja
Bagus .. ini bekerja untuk saya
Jatin Gadhiya
Bagaimana kamu tahu, kawan ???? Terima kasih!
Pengembang
29

Ini adalah masalah yang diketahui dan ada solusi resmi baru yang diterbitkan oleh tim pengembang SSMS.

Anda dapat melihat tiket terbuka di sistem umpan balik Microsoft di tautan berikut: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Sejarah singkat:

Solusi pertama yang disajikan adalah menyalin file:Microsoft.VisualStudio.Shell.Interop.8.0.dll

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

ke dalam direktori: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Kemudian, solusi yang lebih fokus diterbitkan (yang saya gunakan): Cukup hapus fileC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Bagaimanapun, beberapa hari yang lalu tim mempublikasikan pembaruan seperti yang Anda lihat di tautan di atas. Ini adalah kutipan dari tanggapan resmi yang diperbarui:

Solusi yang disarankan, untuk sementara, adalah:

1) Tutup semua instance SSMS

2) Edit ssms.exe.config

3) Hapus baris yang memiliki teks berikut (seharusnya menjadi baris 38): NgenBind_OptimizeNonGac enabled = “1”

Itu perubahan yang sama yang akan ada di rilis SSMS 18.x berikutnya

Catatan! lokasi file ssms.exe.config ada di folder:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE

Ronen Ariely
sumber
1
Ini harus menjadi solusi yang disetujui.
Omzig
Anda harus @Omzig, tetapi untuk beberapa alasan bahkan tidak mendapatkan jumlah maksimum voting😃
Ronen Ariely
1
Penanganan yang tepat .. !! Terima kasih teman, ini memperbaiki masalah.
Mohamed Ayas
Anda dipersilahkan @MohamedAyas 😃
Ronen Ariely
Saya memiliki SQL Management Studio 2014 tetapi saya tidak memiliki folder seperti itu. ssms.exe.config ada di C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... dan konten tidak ada hubungannya dengan yang disebutkan di sini. Tolong ada bantuan?
jstuardo
1

Saya baru saja melewati masalah yang sama pada Server 2016 yang baru dibangun dengan SQL Server 2017 & SSMS 18.0, namun hilang setelah 2 reboot dimana server sepenuhnya ditambal dengan patch 2019 O / S Maret. Saya akan mencoba melakukan beberapa pengujian lebih lanjut untuk mencari tahu apakah itu benar-benar patch O / S yang membantu ini, tapi saya tidak tahu apa-apa menginstal sementara itu di server itu.

Tampaknya lebih acak setelah reboot, tetapi apa yang saya perhatikan sekarang adalah bahwa SSMS berfungsi setelah menginstal, tetapi kemudian SCCM dalam org saya mulai menginstal berbagai hal dan SSMS berhenti bekerja. Sekarang tersangka adalah ".NET Framework 3.5 Server Feature 2016"

M. Strzelecki
sumber
0

Ada solusi lain untuk masalah ini. Pada item Umpan Balik Azure SQL Server Management Studio 18 GA (15.0.18118.0) tidak kompatibel dengan .NET Framework 4.8 Erich Signer menyarankan:

Langkah 1:

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

Ganti nama dan pastikan file ini tidak memiliki .pkgdefekstensi lagi. Atau hapus file.

Langkah 2:

Hapus kunci registri berikut (yang dibuat di SSMS 18 Startup menggunakan file ".pkgdef" yang disebutkan di atas):

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

Berdasarkan komentar yang awalnya ditinggalkan oleh omzig

pengguna126897
sumber
0

Saya menghadapi masalah yang sama dan setelah mencari beberapa saat untuk masalah ini, saya menemukan artikel selangkah demi selangkah menangani masalah ini:

Solusi yang diberikan adalah:

Salin file PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (file dengan versi assembly 15.0.0.0) ke dalam folder PublicAssemblies.

Langkah-langkahnya adalah sebagai berikut:

  • Pertama, sebagai tindakan pencegahan, penulis mengganti nama yang sudah ada PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllmenjadi sesuatu yang lain, kalau-kalau saya perlu file itu nanti.
  • Kemudian dia menyalin Microsoft.VisualStudio.Shell.Interop.8.0.dllfile dari PrivateAssemblies\Interopdalam PublicAssembliesfolder.

Setelah perubahan ini, SSMS dimuat tanpa masalah.

Hadi
sumber