0

私はexeで動作し、CLR内の小さなxmlファイルでも動作するフォローコードを持っていますが、10MBを超えるとスレッド中断エラーが発生します。 SQL Serverで構成する必要があるものはありますか?CLRストアドプロシージャスレッド例外

Try 

    sStream = HttpRequest.GetRequestStream() 
    sStream.Write(baByteArray, 0, baByteArray.Length) 
    sStream.Close() 
    wrWebResponse = HttpRequest.GetResponse() 
    sStream = wrWebResponse.GetResponseStream() 
    Dim readStream As New StreamReader(sStream, System.Text.Encoding.UTF8) 
    strXmlResponse = readStream.ReadToEnd() ' Errors out here 
    strXmlResponseDoc.LoadXml(strXmlResponse) 
    wrWebResponse.Close() 
    sStream.Close() 
    readStream.Close() 

Catch ex As Exception 

    SqlContext.Pipe.Send(ex.ToString()) 
    clsE.LogError(ex.ToString()) 

End Try 

エラーメッセージ:

System.Threading.ThreadAbortException: Thread was being aborted. 
at System.Threading.Thread.AbortInternal() 
at System.Threading.Thread.Abort(Object stateInfo) 
at System.Data.SqlServer.Internal.ClrLevelContext.CheckSqlAccessReturnCode(SqlAccessApiReturnCode eRc) 
at System.Data.SqlServer.Internal.ClrLevelContext.SendMessageToPipe(String message, SmiEventSink eventSink) 
at Microsoft.SqlServer.Server.SqlPipe.Send(String message) 
at MacCLR.MacClass.RequestXml(String strXmlToSend) 
at MacCLR.StoredProcedures.ProcessShippingXML_1(String iOrderNumb, String iXmlFilePath, String iXmlFileName, SqlInt32& iResult, SqlString& iResult_String) 
+0

はい。これは.NETのCLRストアドプロシージャです – Somejerk

+0

クールです。私は.NET言語タグを追加しました。このタグは、常にSOのプライマリタグでなければなりません。ありがとう。 – Gray

+1

SQLCLRからファイルをダウンロードしないでください。外部の.exe –

答えて

0

IDisposableインターフェイスごとにusingブロックを配置したあと、私はまだエラーが表示されていましたが、32ビットSQL Serverインストールであり、64ビットとは違ってCLRメモリを処理することがわかりました-ビット。少なくともより堅牢なソリューションを実装できるようになるまで、; -g384スタートアップパラメータを使用すると、少なくともエラーが発生しました。助けてくれてありがとう。

0

あなたはそれを作成するすべてのオブジェクトはIDisposableインターフェースがUsingブロックにする必要が実装されています。これにより、例外に関係なく、オブジェクトが迅速にクリーンアップされます。これには、2つのストリーム、WebResponse、およびStreamReaderが含まれます。

これは、SQL Serverプロセス内で実行されているコードにとって特に重要です。

+0

私はコードをusingブロックに入れようとしていますが、〜1MBのファイルでうまく動作するのは奇妙です。 – Somejerk

+1

それはまったく奇妙ではありません。あなたはガベージコレクションサイクルまで廃棄されないリソースを食べています。リソースが大きくなればなるほど、問題が増えます。 –

関連する問題