Alcuni background: ho riscontrato questa eccezione di memoria all'interno di SSMS 2012 da quando è stato rilasciato accoppiato con SQLPrompt di Red Gate (questa eccezione non si verifica mai nel mio SSMS 2008R2 sullo stesso laptop).SSMS 2012 System.OutOfMemoryException (lato client) e SQL Prompt (informazioni di debug incl)
Originariamente stavo incontrando queste eccezioni quotidianamente (SSMS2012 e SQLPrompt) che mi costringe a chiudere e riaprire SSMS (insieme a tutto ciò su cui stavo lavorando). Mesi fa mi sono imbattuto in un thread di supporto che indicava possibili componenti aggiuntivi come causa, quindi ho disinstallato il mio unico componente aggiuntivo (SQL Prompt, ma non ho disinstallato il resto del pacchetto dello sviluppatore) e sono andato molti mesi senza una sola eccezione molto meno l'eccezione System.OutOfMemoryException.
Una volta SP1 è stato rilasciato per il 2012 ho applicato e reinstallato SQL Prompt di nuovo (la versione più recente) per vedere se forse la questione era stata affrontata ed entro 7 ore di tempo di sviluppo sono stato accolto ancora una volta con lo System.OutOfMemoryException infame.
Attraverso tutto questo ho aperto i ticket con Red Gate e inoltro i registri di debug in cui visualizzano l'eccezione, ma poiché l'eccezione di memoria non elenca esplicitamente SQLPrompt non aumenteranno il problema al team di sviluppo. Prima di questa specifica eccezione, SQL Prompt tuttavia lancia numerose eccezioni (alcune elencate di seguito) all'interno dell'SSE 2012 di SSMS (Visual Studio 2010). Credo che l'eccezione di memoria sia sintomatica di un problema con il modo in cui SQL Prompt gestisce i dati memorizzati nella cache e mangia la memoria disponibile per SSMS che alla fine genera un'eccezione.
ho imparare a rinviare questo problema e come riprodurlo ed è direttamente collegata a due variabili:
- Collegamento e lavorando su più istanze di SQL Server Management Studio (Esplora oggetti e query finestre). Cioè Collegato a 7 istanze ha compensato l'eccezione entro 2-3 ore.
- Restituzione di set di risultati da più istanze. Ciò include le query utilizzate da SSMS per restituire informazioni all'IDE e i risultati restituiti alle singole finestre di query.
Più istanze sono connesse al fast l'eccezione viene sollevata che mi porta nella cache di SQL Prompt tutte le informazioni dell'oggetto per istanze. Una volta sollevata l'eccezione di memoria, la situazione degrada fino a quando SSMS non si arresta completamente (a meno che non lo chiuda prima).
Quello che sto cercando è come raccogliere più/informazioni migliori da inviare a Red Gate per correggere questo problema. Questo è dove ho bisogno del tuo aiuto.
portatile: HP Elite libro 8440 RAM: 6GB
OS attuale: Win 7 Enterprise Ed Sp1
Ecco alcune delle eccezioni causate da SQL Prompt:
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)
E qui è l'eccezione di memoria:
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)
Anche in questo caso, per essere chiari, non so se le altre eccezioni riguardano o no, ma l'eccezione di memoria solo succede con SQL Prompt installato.
Grazie per l'assistenza!
Potrebbe essere più adatto ai [forum RedGate] (http://www.red-gate.com/messageboard/index.php) – Andomar
Per me questo forum è un super-set del forum Red Gate quindi io ' d avere una migliore possibilità di ottenere un aiuto avanzato qui. Inoltre, ho avuto a che fare con il supporto di Red Gate per molti mesi senza risoluzione. – artofsql
Poiché l'utilizzo del SSMS 2012 accoppiato con SQLPrompt di Redgate si sta diffondendo nel reparto, questa è l'eccezione. Uno sviluppatore DB peer che ha appena passato a utilizzare SSMS 2012 con SQLPrompt si sta arrestando in modo anomalo. – artofsql