Avatar billede danskov Nybegynder
02. november 2010 - 16:21 Der er 3 kommentarer og
1 løsning

ThreadAbortException ifm. sql server clr function

Jeg har lavet en scalar sql clr function som benytter ICSharpCode.SharpZipLib til at komprimere et xml dokument. I næsten en måned har det kørt uden problemer i vores produktionsmiljø, men i dag begynder vi at få ThreadAbortExceptions i modulet som lagde vitale dem af miljøet ned. Er der nogen der har erfaringer med brug af sql clr functioner?

Stacktrace:
EXCEPTION: KC.PRINT.ExceptionHandling.AMSDataException: Unknown DB error ---> System.Data.SqlClient.SqlException: A .NET Framework error occurred during execution of user-defined routine or aggregate "FN_Decode":
ICSharpCode.SharpZipLib.SharpZipBaseException: System.TypeInitializationException: The type initializer for 'ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree' threw an exception. ---> System.Threading.ThreadAbortException: Exception of type 'System.Threading.ThreadAbortException' was thrown.
  --- End of inner exception stack trace ---
  at ICSharpCode.SharpZipLib.Zip.Compression.InflaterHuffmanTree..ctor(Byte[] codeLengths)
  at ICSharpCode.SharpZipLib.Zip.Compression.InflaterDynHeader.Decode(StreamManipulator input)
  at ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Decode()
  at ICSharpCode.SharpZipLib.Zip.Compression.Inflater.Inflate(Byte[] buf, Int32 offset, Int32 len)
  at ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Read(Byte[] b, Int32 off, Int32 len)
ICSharpCode.SharpZipLib.SharpZipBaseException:
  at ICSharpCode.SharpZipLib.Zip.Compression.Streams.InflaterInputStream.Read(Byte[] b, Int32 off, Int32 len)
  at ICSharpCode.SharpZipLib.GZip.GZipInputStream.Read(Byte[] buf, Int32 offset, Int32 len)
  at System.IO.StreamReader.ReadBuffer()
  at System.IO.StreamReader.ReadToEnd()
  at SqlFunctions.Decode(SqlString input)
.
  at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
  at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
  at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)
  at System.Data.SqlClient.SqlDataReader.HasMoreRows()
  at System.Data.SqlClient.SqlDataReader.ReadInternal(Boolean setTimeout)
  at System.Data.SqlClient.SqlDataReader.Read()
  at KC.PRINT.MsSqlDALImpl.MsSqlDALImpl.GetDocumentBatch(GetDocumentRequestType getDocumentRequest) in d:\CCNetWrkDir\AMP_2010-04.HF\1032_Print\Archive\KC.PRINT.MsSqlDALImpl\MsSqlDALImpl.cs:line 1590
Avatar billede janus_007 Nybegynder
02. november 2010 - 21:02 #1
Svært at udtale sig om uden koden, men umiddelbart er der noget der opretter en tråd og din mainthread (CLR'en) har en Abort førend denne er tilendebragt.
Men men... er du 110% på at den SharpZip kan pakke det du prøver på? Tjek det ved at indsætte en række ad gangen med en cursor og se hvor den stopper.
Avatar billede danskov Nybegynder
03. november 2010 - 15:58 #2
Hej Janus,

Tak for dit input. :) Hensigten med mit spørgsmål var egentlig at høre om nogen havde erfaring med brugen af .NET assemblies i sql serveren og de problemer der kan være med det, da jeg ikke tror det er noget der bliver brugt særligt udbredt i produktionsløsninger.
Jeg har generelt rigtigt gode erfaringer med SharpZip og har i denne forbindelse komprimeret 6-7 mio dokumenter uden problemer. Jeg er ret sikker på at der er tale om et performance problem, da løsningen med komprimering af nye dokumenter har kørt upåklageligt i næsten en måned før dette opstod.

-Dan
Avatar billede danskov Nybegynder
15. marts 2011 - 13:27 #3
Janus-> Jeg har ikke oplevet fejlen igen. Da du er den eneste der svarende, synes jeg næsten du skal have pointene. Smid et svar :)
Avatar billede danskov Nybegynder
11. august 2011 - 16:01 #4
lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester