SQL Server Management Studio 18 sẽ không mở (chỉ có màn hình giật gân bật lên)


105

Tôi vừa cài đặt SSMS 18 GA trên máy tính chỉ cài đặt VS2019 và khi tôi cố mở SSMS, màn hình giật gân sẽ xuất hiện, nhưng sau đó quá trình sẽ thoát.

Chạy ssms với -logtham số cho thấy một thông báo lỗi:

CreatInstance không thành công cho gói [Gói lập lịch tác vụ] Nguồn: 'mscorlib' Mô tả: Không thể tải tệp hoặc lắp ráp 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a phụ thuộc của nó. Định nghĩa tệp kê khai của cụm lắp ráp không khớp với tham chiếu lắp ráp. (Ngoại lệ từ HRESULT: 0x80131040) System.IO.FileLoadException: Không thể tải tệp hoặc lắp ráp 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a Định nghĩa tệp kê khai của cụm lắp ráp không khớp với tham chiếu lắp ráp. (Ngoại lệ từ HRESULT: 0x80131040) Tên tệp: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 15.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a '---> System.IO.FileLoadException: Không thể tải tệp hoặc lắp ráp' Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7 . Định nghĩa tệp kê khai của cụm lắp ráp không khớp với tham chiếu lắp ráp. (Ngoại lệ từ HRESULT: 0x80131040) Tên tệp: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Đăng nhập ràng buộc hội được TẮT. Để bật ghi nhật ký liên kết lắp ráp, đặt giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) thành 1. Lưu ý: Có một số hình phạt hiệu suất liên quan đến ghi nhật ký lỗi liên kết lắp ráp. Để tắt tính năng này, hãy xóa giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

tại System.Reflection. assemblyString, String typeName, Boolean ignCase, BindingFlags ràng buộc .CreateInstance (String assemblyName, String typeName)

System.IO.FileLoadException: Không thể tải tệp hoặc lắp ráp 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a' hoặc một trong các phụ thuộc của nó. Định nghĩa tệp kê khai của cụm lắp ráp không khớp với tham chiếu lắp ráp. (Ngoại lệ từ HRESULT: 0x80131040) Tên tệp: 'Microsoft.VisualStudio.Shell.Interop.8.0, Version = 8.0.0.0, Culture = trung tính, PublicKeyToken = b03f5f7f11d50a3a'

WRN: Đăng nhập ràng buộc hội được TẮT. Để bật ghi nhật ký liên kết lắp ráp, đặt giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) thành 1. Lưu ý: Có một số hình phạt hiệu suất liên quan đến ghi nhật ký lỗi liên kết lắp ráp. Để tắt tính năng này, hãy xóa giá trị đăng ký [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Tôi đã thử chạy "Sửa chữa" trên SSMS và đã thử sửa chữa C:\ProgramData\Package Cache\{AAA9F15B-AF45-4562-9991-93A848D3A902}v15.0.28307.421\redist\vs2017_isoshell_for_ssms.msinhưng vấn đề vẫn còn.


1
Tệp nhật ký được tạo bằng cách thêm -logtham số. Ví dụ:"C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\Ssms.exe" -log C:\drop\log.txt
Mitch

1
Bạn cũng có thể nhận nhật ký từ C: \ Users (người dùng) \ AppData \ Roaming \ Microsoft \ AppEnv \ 15.0 \ ActivityLog.xml mà không cần sử dụng công tắc -log
Stephane

Câu trả lời:


125

Tôi vừa phủ Microsoft.VisualStudio.Shell.Interop.8.0.dll vào C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssembliesvới bản sao từ ..\PrivateAssemblies\Interopvà IDE mở ra. (Cảm ơn Mitch vì đã phát hiện ra tên DLL vi phạm.)

Điều này trông giống như một câu hỏi và trả lời phổ biến hiện nay, vì vậy tôi rất vui khi biết đây không chỉ là tôi.


Đối với tôi có một Microsoft.VisualStudio.Shell.Interop.8.0thư mục bổ sung để sao chép vào.
Andez

Làm việc như một cơ duyên và cứu người. Cảm ơn.
HartleySan

Đã làm cho tôi. Sao chép từ \ PrivateAssemblies vào \ PublicAssemblies.
Hairgami_Master

65

Khi Ronan Ariely giới thiệu , một giải pháp chính thức đã được công bố trong đó khuyến nghị loại bỏ một dòng khỏi ssms.exe.config.

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

Nếu bạn đã chạy giải pháp trước đây của tôi về việc thêm cụm vào GAC, có lẽ bạn nên gỡ cài đặt nó bằng cách chạy:

gacutil /u Microsoft.VisualStudio.Shell.Interop.8.0,Version=15.0.0.0,Culture=neutral,PublicKeyToken=b03f5f7f11d50a3a

1
Bất kỳ phiên bản nào gacutilcũng được. Hoặc bạn có thể sử dụngpowershell nếu bạn chưa cài đặt phiên bản SDK.
Mitch

1
Yêu StackExchange cho điều này. Hoàn toàn làm việc cho tôi.
Matt Ninja

Thật tuyệt .. công việc này đối với tôi
Jatin Gadhiya

Làm thế nào bạn biết điều đó, người đàn ông ???? Cảm ơn bạn!
Nhà phát triển

29

Đây là vấn đề đã biết và có cách giải quyết chính thức mới được công bố bởi nhóm các nhà phát triển SSMS.

Bạn có thể xem vé mở tại hệ thống phản hồi của Microsoft trong liên kết sau: https://feedback.azure.com/forums/908035-sql-server/suggestions/37502512-ssms2018-installed-but-will-not-run

Truyện ngắn:

Cách giải quyết đầu tiên được trình bày là sao chép tệp:Microsoft.VisualStudio.Shell.Interop.8.0.dll

từ thư mục: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PrivateAssemblies\Interop

vào thư mục: C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\PublicAssemblies

Sau đó, một giải pháp tập trung hơn đã được xuất bản (đó là những gì tôi đã sử dụng): Chỉ cần xóa tệpC:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE\CommonExtensions\Platform\Microsoft.VisualStudio.MinShell.Interop.pkgdef

Dù sao đi nữa, vài ngày trước, nhóm phát hành một bản cập nhật như bạn có thể thấy trong liên kết ở trên. Đây là một trích dẫn từ phản hồi cập nhật chính thức:

Cách giải quyết được đề nghị, trong thời gian tạm thời, là:

1) Đóng tất cả các phiên bản của SSMS

2) Chỉnh sửa ssms.exe.config

3) Xóa dòng có văn bản sau (nên là dòng 38): NgenBind_OptizesNonGac được bật = 1

Đó là cùng một thay đổi sẽ có trong phiên bản tiếp theo của SSMS 18.x

Ghi chú! vị trí của tệp ssms.exe.config nằm trong thư mục:C:\Program Files (x86)\Microsoft SQL Server Management Studio 18\Common7\IDE


1
Đây phải là cách giải quyết được phê duyệt.
Omzig

Thật đáng tiếc @Omzig, nhưng vì một số lý do, nó thậm chí còn không có số phiếu bầu tối đa😃
Ronen Ariely

1
Cách giải quyết đúng đắn .. !! Thans mate, điều này đã khắc phục vấn đề.
Mohamed Ayas

Bạn được chào đón nhất @MohamedAyas
Ronen Ariely

Tôi có SQL Management Studio 2014 nhưng tôi không có thư mục như vậy. ssms.exe.config có tại C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio ... và nội dung không liên quan gì đến vấn đề được đề cập ở đây. Bất kỳ giúp đỡ, xin vui lòng?
jstuardo

1

Tôi vừa gặp vấn đề tương tự trên Máy chủ mới được xây dựng 2016 với SQL Server 2017 & SSMS 18.0, tuy nhiên nó đã biến mất sau 2 lần khởi động lại trong đó máy chủ đã được vá hoàn toàn với các bản vá O / S tháng 3 năm 2019. Tôi sẽ thử thực hiện thêm một số thử nghiệm để tìm hiểu xem đó có thực sự là bản vá O / S giúp ích cho việc này không, nhưng tôi không biết có gì khác cài đặt trong lúc này trên máy chủ đó không.

Có vẻ ngẫu nhiên hơn sau khi khởi động lại, nhưng điều tôi nhận thấy bây giờ là SSMS hoạt động ngay sau khi cài đặt, nhưng sau đó SCCM trong org của tôi bắt đầu cài đặt nhiều thứ khác nhau và SSMS ngừng hoạt động. Bây giờ nghi phạm là ".NET Framework 3.5 Server Feature 2016"


0

Có một giải pháp khác cho vấn đề này. Trên mục Phản hồi Azure SQL Server Management Studio 18 GA (15.0.18118.0) không tương thích với .NET Framework 4.8 Erich Signer gợi ý:

Bước 1:

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

Đổi tên và đảm bảo tệp này không có .pkgdefphần mở rộng nữa. Hoặc loại bỏ các tập tin.

Bước 2:

Xóa Khóa đăng ký sau (được tạo tại SSMS 18 Startup bằng tệp ".pkgdef" được đề cập ở trên):

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

Dựa trên một nhận xét ban đầu để lại bởi omzig


0

Tôi đã đối mặt với cùng một vấn đề và sau khi tìm kiếm một thời gian cho vấn đề này, tôi đã tìm thấy bài viết từng bước sau đây để giải quyết vấn đề này:

Giải pháp được cung cấp là:

Sao chép tệp PrivateAssemblies \ Interop \ Microsoft.VisualStudio.Shell.Interop.8.0.dll (tệp có phiên bản lắp ráp 15.0.0.0) vào thư mục PublicAssemblies.

Các bước như sau:

  • Đầu tiên, để phòng ngừa, tác giả đã đổi tên hiện có PublicAssemblies\Microsoft.VisualStudio.Shell.Interop.8.0.dllthành một thứ khác, chỉ trong trường hợp tôi sẽ cần tệp đó sau.
  • Sau đó, anh ta sao chép Microsoft.VisualStudio.Shell.Interop.8.0.dlltập tin từ PrivateAssemblies\Interopvào PublicAssembliesthư mục.

Sau thay đổi này, SSMS được tải mà không có vấn đề gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.