SQL Server Management Studio 18 จะไม่เปิด (หน้าจอเริ่มต้นจะปรากฏขึ้น)


105

ฉันเพิ่งติดตั้ง SSMS 18 GA บนคอมพิวเตอร์ที่ติดตั้ง VS2019 เท่านั้นและเมื่อฉันพยายามเปิด SSMS หน้าจอเริ่มต้นจะปรากฏขึ้น แต่จากนั้นกระบวนการก็จะออก

การรัน ssms ด้วย-logพารามิเตอร์จะแสดงข้อความแสดงข้อผิดพลาด:

CreateInstance ล้มเหลวในแพ็คเกจ [Task Scheduler Package] ที่มา: '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 วัฒนธรรม = เป็นกลาง 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 '---> System.IO.FileLoadException . คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก 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 ระบบสแต็ก), ประเภทบูลีน ignCase ObjectHandleOnStack ประเภทที่ System.Reflection.RuntimeAssemblyCase assemblyString, สตริง typeName, Boolean ละเว้นกรณี, BindingFlags bindingAttr, Binder binder, วัตถุ [] args, วัฒนธรรม CultureInfo, Object [] activationAttributes, หลักฐานความปลอดภัย securityInfo, StackCrawlMark & ​​stackMark) ที่ System.Activator .CreateInstance (แอสเซมบลีสตริงชื่อสตริงประเภทชื่อ)

System.IO.FileLoadException: ไม่สามารถโหลดไฟล์หรือแอสเซมบลี 'Microsoft.VisualStudio.Shell.Interop.8.0, เวอร์ชัน = 8.0.0.0, วัฒนธรรม = เป็นกลาง, PublicKeyToken = b03f5f7f11f50d3a3a' หรือการอ้างอิงอย่างใดอย่างหนึ่ง คำจำกัดความรายการของชุดประกอบที่อยู่ไม่ตรงกับการอ้างอิงชุดประกอบ (ข้อยกเว้นจาก 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 จะเปิดขึ้น (ขอบคุณ Mitch สำหรับการค้นหาชื่อ DLL ที่ละเมิด)

ดูเหมือนว่าคำถาม & คำตอบยอดนิยมในวันนี้ดังนั้นฉันดีใจที่รู้ว่านี่ไม่ใช่แค่ฉัน


สำหรับฉันมีMicrosoft.VisualStudio.Shell.Interop.8.0โฟลเดอร์เพิ่มเติมที่จะคัดลอกไปเป็น
Andez

ทำงานเหมือนมีเสน่ห์และช่วยชีวิต ขอบคุณ
HartleySan

ทำงานให้ฉัน คัดลอกจาก \ PrivateAssemblies เป็น \ PublicAssemblies
Hairgami_Master

65

ในฐานะที่เป็นโรนัน Ariely Reccomends , วิธีการแก้ปัญหาอย่างเป็นทางการได้รับการเผยแพร่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 สำหรับสิ่งนี้ ทำงานให้ฉันโดยสิ้นเชิง
Matt The Ninja

ดี .. งานนี้สำหรับฉัน
Jatin Gadhiya

คุณรู้ได้ยังไงว่าผู้ชาย ???? ขอขอบคุณ!
นักพัฒนา

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

Yous มันควร @Omzig แต่ด้วยเหตุผลบางอย่างมันไม่ได้รับการโหวตสูงสุด😃
Ronen Ariely

1
วิธีแก้ปัญหาที่เหมาะสม .. !! นอกจากนี้ยังแก้ไขปัญหาได้
Mohamed Ayas

คุณยินดีมากที่สุด @MohamedAyas 😃
Ronen Ariely

ฉันมี SQL Management Studio 2014 แต่ไม่มีโฟลเดอร์ดังกล่าว ssms.exe.config อยู่ที่ C: \ Program Files (x86) \ Microsoft SQL Server \ 120 \ Tools \ Binn \ ManagementStudio SQL และเนื้อหาไม่มีส่วนเกี่ยวข้องกับที่กล่าวถึงที่นี่ มีอะไรให้ช่วยไหม?
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 Startup โดยใช้ไฟล์ ".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 โหลดโดยไม่มีปัญหาใด ๆ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.