일부 배경 : SSMS 2012에서이 메모리 예외가 발생하여 Red Gate의 SQLPrompt와 결합되어 출시되었습니다. 같은 노트북에 SSMS 2008R2).SSMS 2012 System.OutOfMemoryException (클라이언트 쪽) 및 SQL 프롬프트 (디버그 정보 포함)
나는 매일 (SSMS2012 및 SQLPrompt) 이러한 예외 사항이 발생하여 SSMS를 닫고 다시 열도록 강요하고 있습니다. 몇 달 전 나는 가능한 부가 기능을 가리키는 지원 스레드를 우연히 만났습니다. 내 추가 기능 (SQL 프롬프트는 없지만 나머지 개발자 번들을 제거하지 못했습니다)은 없이 System.OutOfMemoryException 예외보다 훨씬 적은 단일 예외입니다.
2012 년 SP1이 릴리스되면 다시 적용하여 SQL 프롬프트를 다시 설치 (최신 버전)하여 문제가 해결되었는지 확인하고 개발 시간이 7 시간 이내에 악명 높은 System.OutOfMemoryException으로 다시 인사했습니다.
이 모든 것을 통해 나는 Red Gate로 티켓을 열고 디버깅 로그를 제출했지만 어디에서 예외가 발생했는지는 알 수 있지만 메모리 예외가 SQLPrompt를 명시 적으로 나열하지 않기 때문에 문제를 개발 팀에 전달하지 않을 것입니다. 그러나이 특정 예외 SQL 프롬프트 전에 SSMS 2012 IDE (Visual Studio 2010) 내에서 여러 가지 예외 (아래 나열된 일부)를 던지고 있습니다. 메모리 예외는 SQL Prompt가 캐시 된 데이터를 관리하는 방법과 결국 SSMS에 대한 사용 가능한 메모리를 사용하여 결국 예외를 throw하는 방식과 관련된 문제의 징후라고 생각합니다.
나는이 문제를 어떻게 재현하는 방법을 연기하며 직접 두 변수와 어떻게 연관되는지를 배울했습니다 :
- 연결 및 SSMS의 여러 인스턴스 (Explorer 및 쿼리 창 개체)에서 작동합니다. 나는. 연결 된 7 개의 인스턴스는 2-3 시간 내에 예외를 보냈습니다.
- 여러 인스턴스에서 결과 세트를 리턴합니다. 여기에는 SSMS에서 IDE로 정보를 반환하는 데 사용되는 쿼리와 개별 쿼리 창으로 반환 된 결과가 포함됩니다.
SQL 프롬프트가 인스턴스 당 모든 개체 정보를 캐싱하도록 유도하는 예외가 발생하면 더 빨리 연결됩니다. 메모리 예외가 발생하면 SSMS가 완전히 종료 될 때까지 상황이 저하됩니다 (먼저 닫지 않으면).
내가 쓴 것은이 문제를 해결하기 위해 더 나은/더 나은 정보를 레드 게이트에 제출하는 방법입니다. 이것은 내가 당신의 도움이 필요한 곳입니다.
노트북 : HP 엘리트 북 8440은 RAM : 6기가바이트
현재 OS : 여기
System.ArgumentOutOfRangeException "Specified argument was out of the range of valid values."
Microsoft.VisualStudio.Text.Implementation.BinaryStringRebuilder.GetLineNumberFromPosition(N/A,N/A)
Microsoft.VisualStudio.Text.Implementation.TextSnapshot.GetLineFromPosition(Microsoft.VisualStudio.Text.Implementation.TextSnapshot,N/A)
Microsoft.VisualStudio.Editor.Implementation.VsTextBufferAdapter.GetLineIndexOfPosition(N/A,System.Int32,System.Int32&,System.Int32&)
RedGate.SQLPrompt.CommonVS.Editor.VSScriptProvider.PositionFromIndex(RedGate.SQLPrompt.CommonVS.Editor.VSScriptProvider,System.Int32)
RedGate.SqlPrompt.Metadata.Script.ScriptProviderBase.GetText(RedGate.SQLPrompt.CommonVS.Editor.VSScriptProvider,System.Int32,System.Int32)
RedGate.SqlPrompt.Engine.NewEngine.SqlPromptEngine.GetCandidates(RedGate.SqlPrompt.Engine.NewEngine.SqlPromptEngine,System.Int32)
RedGate.SqlPrompt.Engine.PromptEngineEmulator.get_GetSuggestions(RedGate.SqlPrompt.Engine.PromptEngineEmulator)
RedGate.SqlPrompt.Engine.AutoCompleter.m_FilterChanged(RedGate.SqlPrompt.Engine.AutoCompleter,RedGate.SqlPrompt.Engine.PromptEngineEmulator,System.EventArgs)
RedGate.SqlPrompt.Engine.PromptEngineEmulator.OnFilterChanged(RedGate.SqlPrompt.Engine.PromptEngineEmulator)
RedGate.SqlPrompt.Engine.PromptEngineEmulator.set_Index(RedGate.SqlPrompt.Engine.PromptEngineEmulator,System.Int32)
RedGate.SqlPrompt.Engine.PromptEngineEmulator.set_CaretPosition(RedGate.SqlPrompt.Engine.PromptEngineEmulator,N/A)
RedGate.SQLPrompt.CommonUI.Editor.EditorWindowBase.SetEngineCaretPosition(RedGate.SQLPrompt.SSMSUI.SSMSEditorWindow,N/A)
RedGate.SQLPrompt.CommonUI.Editor.EditorWindowBase.UpdateUIPrompts(RedGate.SQLPrompt.SSMSUI.SSMSEditorWindow)
RedGate.SQLPrompt.CommonVS.Editor.VSEditorWindow.OnTextViewCommandExec(RedGate.SQLPrompt.SSMSUI.SSMSEditorWindow,RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor,RedGate.SQLPrompt.CommonVS.Editor.CommandExecEventArgs)
RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor.AfterCommandExecute(RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor,RedGate.SQLPrompt.CommonVS.Editor.CommandExecEventArgs)
RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor..(RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor.)
RedGate.SQLPrompt.CommonUI.Utils.ErrorDialog.Do(System.Action)
RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor.(RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor,System.Guid&,System.Uint32,System.Uint32,System.IntPtr,System.IntPtr)
RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor..(RedGate.SQLPrompt.CommonVS.Editor.TextViewMonitor.,System.Guid&,System.Uint32,System.Uint32,System.IntPtr,System.IntPtr)
Microsoft.VisualStudio.Editor.Implementation.CommandChainNode.Exec(N/A,N/A,N/A,N/A,N/A,N/A)
System.ArgumentException 00:05:14.7510000 "The parameter is incorrect. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))"
#mMc.#JQub.#OQub(#mMc.#JQub,N/A,System.Uint32,#mMc.#k3ub&)
#mMc.#JQub.#z26.#8Di(#mMc.#JQub.#z26)
RedGate.SQLSourceControl.Engine.SmartAssembly.ExceptionReporting.ErrorReporterBase.Do(RedGate.SQLSourceControl.CommonUI.Forms.ErrorDialog,System.Action,System.Predicate`1<System.Exception>,System.Boolean)
RedGate.SQLSourceControl.Engine.SmartAssembly.ExceptionReporting.ErrorReporterBase.Do(RedGate.SQLSourceControl.CommonUI.Forms.ErrorDialog,System.Action)
RedGate.SQLSourceControl.CommonUI.Forms.ErrorDialog.Do(System.Action)
그리고 : 윈도우 7 엔터프라이즈 에드 SP1을
다음은 SQL 프롬프트에 의해 발생하는 예외의 일부입니다 메모리 예외 :
다른 예외 관련 여부를하지만 메모리 예외 만은 SQL 프롬프트 설치로 발생하는 경우System.OutOfMemoryException <null>
System.Text.StringBuilder.set_Capacity(System.Text.StringBuilder,N/A)
Microsoft.SqlServer.Management.QueryExecution.QEDiskStorageView.set_MaxNumBytesToDisplay(N/A,N/A)
Microsoft.SqlServer.Management.QueryExecution.QEDiskDataStorage.GetStorageView(N/A)
Microsoft.SqlServer.Management.QueryExecution.QEResultSet.StartRetrievingData(Microsoft.SqlServer.Management.QueryExecution.QEResultSet,System.Int32,N/A)
Microsoft.SqlServer.Management.QueryExecution.ResultSetAndGridContainer.StartRetrievingData(N/A,N/A,N/A)
Microsoft.SqlServer.Management.QueryExecution.ResultsToGridBatchConsumer.OnNewResultSet(Microsoft.SqlServer.Management.QueryExecution.ResultsToGridBatchConsumer,N/A,N/A)
Microsoft.SqlServer.Management.QueryExecution.QESQLBatch.ProcessResultSet(Microsoft.SqlServer.Management.QueryExecution.QESQLBatch,N/A)
Microsoft.SqlServer.Management.QueryExecution.QESQLBatch.DoBatchExecution(Microsoft.SqlServer.Management.QueryExecution.QESQLBatch,System.Data.SqlClient.SqlConnection,N/A)
Microsoft.SqlServer.Management.QueryExecution.QESQLBatch.Execute(N/A,N/A,N/A)
Microsoft.SqlServer.Management.QueryExecution.QEOLESQLExec.DoBatchExecution(Microsoft.SqlServer.Management.QueryExecution.QEOLESQLExec,Microsoft.SqlServer.Management.QueryExecution.QESQLBatch)
Microsoft.SqlServer.Management.QueryExecution.QESQLExec.ExecuteBatchCommon(Microsoft.SqlServer.Management.QueryExecution.QEOLESQLExec,N/A,N/A,System.Boolean&)
Microsoft.SqlServer.Management.QueryExecution.QEOLESQLExec.ExecuteBatchHelper(N/A,N/A,N/A,N/A)
Microsoft.SqlServer.Management.QueryExecution.QEOLESQLExec.ProcessBatch(N/A,N/A,N/A)
.BatchParser.ThunkCommandExecuter.ProcessBatch(N/A,N/A,N/A)
은 다시 명확하게하기 위해, 나도 몰라.
도움 주셔서 감사합니다.
[RedGate 포럼] (http://www.red-gate.com/messageboard/index.php)에 더 적합 할 수 있습니다 – Andomar
나에게이 포럼은 레드 게이트 포럼의 수퍼 세트이므로, d 여기에서 고급 도움을 얻을 수있는 더 나은 기회를 얻으십시오. 게다가, 나는 해상도가없는 여러 달 동안 레드 게이트 지원을 해왔습니다. – artofsql
Redgate의 SQLPrompt와 결합 된 2012 SSMS의 사용이이 부서에서 확산됨에 따라이 예외가 있습니다. 이제는 SQLPrompt로 SSMS 2012를 사용하도록 전환 한 피어 DB 개발자가 충돌하고 있습니다. – artofsql