visual-studio-2017 - 使用固定选项卡时 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 分辨率,并用于复制而不是扩展。当一切都恢复到我想要的时候,错误又开始了。
解决方案
经过更多调查:发现这个线程:
并在那里复制了提示。在将更多测试问题缩小到 Displayport 之后 - 罪魁祸首显示器通过 USB 端口复制器连接到笔记本电脑,它可以将显示输出到三个显示器(2xHDMI 和 1xDP)。当有问题的显示器从 DP 更改为 HDMI 连接时,问题就消失了。
推荐阅读
- kubernetes - 重启 master 和丢失节点上的 pod
- windows - fsutil - setCaseSensitiveInfo 后不支持请求
- android-espresso - Android.Espresso:如何在 SP 中检查 TextView 的文本大小?
- java - 理解通用客户端接口实现的问题
- python - 在一个循环中运行多个测试的最有效方法是什么?Python
- python - ROS CPP 等效于 Python subprocess.call() with shell=True
- javascript - Angular 从 json api 返回空白 response.data
- matlab - 增加 parfor 循环的工作人员数量
- c++ - 如何检查提升消息队列是否存在
- java - 如何配置hibernate search 5.9工作线程池大小