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 인터페이스에 대해 사용중인 블록을 넣은 후에도 여전히 오류가 발생했지만 32 비트 SQL Server 설치이며 64 비트가 아닌 64 비트 CLR 메모리를 처리한다는 것을 알게되었습니다. -비트. 적어도 더 강력한 솔루션을 구현할 때까지; -g384 시작 매개 변수를 사용하면 오류가 발생했습니다. 도와 주셔서 감사합니다.

0

모든 당신이이 IDisposable 인터페이스는 Using 블록에 있어야 구현 객체 생성. 이렇게하면 예외에 관계없이 개체를 즉시 정리할 수 있습니다. 여기에는 두 스트림, WebResponse 및 StreamReader가 포함됩니다.

이것은 특히 SQL Server 프로세스 내부에서 실행되는 코드에 중요합니다.

+0

사용하는 블록에 코드를 넣을 것입니다. 그러나 1MB 파일에서 잘 작동하는 것이 이상하게 보입니다. – Somejerk

+1

전혀 이상하지 않습니다. 가비지 콜렉션주기가 끝나기 전까지 처리되지 않는 리소스를 먹고 있습니다. 리소스가 클수록 더 많은 문제가 발생합니다. –