首页 > 解决方案 > 使用固定选项卡时 SQL Server Management Studio 17.9 崩溃

问题描述

由于工作原因,我需要在我的笔记本电脑、SQL Server Management Studio 和 Visual Studio 2017 Dev 上安装最新的 SQL Server(所有最新版本都可以在 Microsoft 网站上下载)。

在我安装 VS 2017 之前一切正常(有很多选项 - 总安装量约为 50GB,反映了正在完成的工作)。完成后,当我在选项卡之间切换时,SSMS 会崩溃。是的。我在选项卡 A 中打开查询 A,然后在选项卡 B 中打开查询 B(连接到同一服务器),当我单击刚刚加载的查询 B 时(在 Windows 资源管理器中双击并使用 .sql 文件的默认关联)-繁荣:否错误信息,没有警告。SSMS 显示转动车轮 5 秒,然后重新启动。

显然,此时它无法使用,但是在我对 Windows 进行核武器攻击并从头开始重新安装之前,是否有人遇到过类似的问题并找到了原因?

已经尝试过 SSMS 修复,VS 修复,SSMS 重新安装,VS 重新安装,SSMS 卸载然后重新安装,SQl 卸载 + SSMS unisntall + VS 卸载(有问题,因为 VS 安装程序想要更新,然后无法卸载整个 VS,必须这样做应用程序-by-app 手动),然后按照 Microsoft 建议的顺序重新安装:SQL Server、SSMS、VS。再次 - 工作正常,直到 VS 安装完成......

任何帮助表示赞赏。

经过进一步调查:需要固定其中一个选项卡才能发生崩溃。但是当我固定任何标签的那一刻......一切都消失了。所以 SSMS 和 VS 之间可能没有链接,但现在重复了 3 次:打开选项卡,固定,打开另一个选项卡,第一次单击,然后返回第二次并崩溃。

经过一段时间和进一步调查(2018 年 10 月 11 日):

这个问题又发生在我身上。但目前尚不清楚它是DisplayPort还是Displaylink to DP(因为我仍在使用端口复制器,使用 DisplayLink 解决方案),这就是原因,因为我的笔记本电脑没有 DP 输出,只有 HDMI。我也不能在其他工作站上复制问题而不破坏其他人的东西。

到 DisplayPort 的链接仍然存在,因此切换到 HDMI 仍然是一种有效的解决方法(如下面我的回答),但问题绝对是源自软件,在某种程度上与 Visual Studio 相关。或者至少在事件查看器中显示此错误的内容:

应用程序:Ssms.exe 框架版本:v4.0.30319 描述:进程因未处理的异常而终止。异常信息:Microsoft.VisualStudio.PlatformUI.Shell.DraggedTabInfo.ExpandTabStripCore() 中 Microsoft.VisualStudio.PlatformUI.Shell.DraggedTabInfo.NormalizeTabHeight() 中 System.Windows.Rect.set_Height(Double) 中的 System.ArgumentException。 PlatformUI.Shell.DraggedTabInfo.MeasureTabStrip() 在 Microsoft.VisualStudio.PlatformUI.Shell.Controls.DockPreviewWindow.OnPanelLayoutUpdated(System.Object) 在 Microsoft.VisualStudio.PlatformUI.Shell.Controls.DockPreviewWindow.OnPanelLayoutUpdated(System.Object, System.Windows .RoutedEventArgs) 在 System.Windows.RoutedEventHandlerInfo.InvokeHandler(System.Object, System.Windows.RoutedEventArgs) 在 System.Windows.EventRoute。
在 Microsoft.VisualStudio.PlatformUI.Shell.Controls.ReorderTabPanel.OnLayoutUpdated(System.Object, System.EventArgs) 在 System.Windows.ContextLayoutManager.fireLayoutUpdateEvent() 在 System.Windows.ContextLayoutManager.UpdateLayout() 在 System.Windows.ContextLayoutManager。 UpdateLayoutCallback(System.Object) 在 System.Windows.Media.MediaContext+InvokeOnRenderCallback.DoWork()
在 System.Windows.Media.MediaContext.FireInvokeOnRenderCallbacks()
在 System.Windows.Media.MediaContext.RenderMessageHandlerCore(System.Object) 在 System.Windows.Media.MediaContext.RenderMessageHandler(System.Object) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32 ) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.Object, System.Delegate, System.Object, Int32, System.Delegate) 在 System.Windows.Threading.DispatcherOperation.InvokeImpl() 在 System.Windows.Threading.DispatcherOperation .InvokeInSecurityContext(System.Object) 在 System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System .Threading.ContextCallback, System.Object,Boolean) 在 System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object) 在 MS.Internal.CulturePreservingExecutionContext.Run(MS.Internal.CulturePreservingExecutionContext, System.Threading.ContextCallback, System.对象)在 System.Windows.Threading.DispatcherOperation.Invoke() 在 System.Windows.Threading.Dispatcher.ProcessQueue() 在 System.Windows.Threading.Dispatcher.WndProcHook(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS .Win32.HwndWrapper.WndProc(IntPtr, Int32, IntPtr, IntPtr, Boolean ByRef) 在 MS.Win32.HwndSubclass.DispatcherCallbackOperation(System.Object) 在 System.Windows.Threading.ExceptionWrapper.InternalRealCall(System.Delegate, System.Object, Int32) 在 System.Windows.Threading.ExceptionWrapper.TryCatchWhen(System.对象,System.Delegate,System.Object,Int32,System.Delegate)在 System.Windows.Threading.Dispatcher.LegacyInvokeImpl(System.Windows.Threading.DispatcherPriority,System.TimeSpan,System.Delegate,System.Object,Int32)在MS.Win32.HwndSubclass.SubclassWndProc(IntPtr,Int32,IntPtr,IntPtr)

相同的笔记本电脑,与以前相同的 Windows 安装,相同的 SSMS 和 VS 安装。发生了什么变化:不同的扩展坞(thunderbolt 而不是 USB3.0),两个外部显示器(相同型号,但不同的样本)通过 DP 菊花链连接,连接到扩展坞中的单个 miniDisplayport 输出。

直到我颠倒了菊花链的工作顺序(所以以前的显示器编号 2 现在是显示器编号 3,笔记本电脑本机保留主显示器和编号 1)一切都很好。

交换后问题又回来了。由于显示器被识别为新设备,因此它们被设置为从其原始 1920x1200 分辨率设置为 1920x1080 分辨率,并用于复制而不是扩展。当一切都恢复到我想要的时候,错误又开始了。

标签: visual-studio-2017ssmssql-server-2017

解决方案


经过更多调查:发现这个线程:

https://feedback.azure.com/forums/908035-sql-server/suggestions/33619039-crash-when-going-to-pinned-tab

并在那里复制了提示。在将更多测试问题缩小到 Displayport 之后 - 罪魁祸首显示器通过 USB 端口复制器连接到笔记本电脑,它可以将显示输出到三个显示器(2xHDMI 和 1xDP)。当有问题的显示器从 DP 更改为 HDMI 连接时,问题就消失了。


推荐阅读