Using Layout SQL crashes SQL Server Management Studio
Published 29 October 2019
Using Layout SQL causes SQL Server Management Studio to hang and have to use Windows Task Manager to kill the process.
Error text
System.ApplicationException: Exception within progress task ---> System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.VisualStudio.TextManager.Interop.IVsTextView'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{BB23A14B-7C61-469A-9890-A95648CED5E6}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). at Microsoft.VisualStudio.TextManager.Interop.IVsTextView.GetSelection(Int32& piAnchorLine, Int32& piAnchorCol, Int32& piEndLine, Int32& piEndCol) at RedGate.SQLPrompt.CommonVS.Editor.VSEditorWindow.get_Selection() at RedGate.SQLPrompt.CommonUI.Refactor.Refactor.a(EditorWindowBase , b , c& ) at RedGate.SQLPrompt.CommonUI.Refactor.Refactor.a(EditorWindowBase , c& , b[] ) at RedGate.SQLPrompt.CommonUI.Refactor.Refactor.a.Run() at RedGate.SQLPrompt.CommonUI.Progress.TaskAggregator.Run() at RedGate.SQLPrompt.CommonUI.Forms.ProgressDialogue.a() --- End of inner exception stack trace --- at RedGate.SQLPrompt.CommonUI.Forms.ProgressDialogue.ShowProgress(ITaskRunner task) at RedGate.SQLPrompt.CommonUI.Refactor.Refactor.a(a ) at RedGate.SQLPrompt.CommonUI.Refactor.Refactor.LayOutSql(EditorWindowBase editor, SqlPromptOptions options) at b.Execute() at RedGate.SQLPrompt.CommonVS.Commands.VSCommandControler.Exec(String CmdName, vsCommandExecOption ExecuteOption, Object& VariantIn, Object& VariantOut, Boolean& Handled)
Cause
Sometimes without apparent cause SQL Server Management Studio installations can delete the interface that Prompt and Refactor need to get access to the query window.
How to fix
Run the following command from a Command Prompt:
regsvr32 "%commonprogramfiles%\microsoft shared\msenv\textmgrp.dll"
If you continue to experience problems, please contact Redgate Support.