1

SQL Server 2008と同等の処理を行うストアド プロシージャを作成しFOR XML AUTOました。テストを行ったところ、役に立たないエラー メッセージが表示されました。このエラーはどういう意味ですか?

Msg 10329, Level 16, State 49, Procedure ForXML, Line 0 .NET Framework execution was aborted.

System.Threading.ThreadAbortException: Thread was being aborted.

System.Threading.ThreadAbortException:

  at System.Runtime.InteropServices.Marshal.PtrToStringUni(IntPtr ptr, Int32 len)
  at System.Data.SqlServer.Internal.CXVariantBase.WSTRToString()
  at System.Data.SqlServer.Internal.SqlWSTRLimitedBuffer.GetString(SmiEventSink sink)
  at System.Data.SqlServer.Internal.RowData.GetString(SmiEventSink sink, Int32 i)
  at Microsoft.SqlServer.Server.ValueUtilsSmi.GetValue(SmiEventSink_Default sink, ITypedGettersV3 getters, Int32 ordinal, SmiMetaData metaData, SmiContext context)
  at Microsoft.SqlServer.Server.ValueUtilsSmi.GetValue200(SmiEventSink_Default sink, SmiTypedGetterSetter getters, Int32 ordinal, SmiMetaData metaData, SmiContext context)
  at System.Data.SqlClient.SqlDataReaderSmi.GetValue(Int32 ordinal)
  at System.Data.SqlClient.SqlDataReaderSmi.GetValues(Object[] values)
  at System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[] values)
  at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
  at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
  at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset, DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32 startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object parentChapterValue)
  at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables, IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)
  at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
  at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
  at ForXML.GetXML...
4

2 に答える 2

3

それはあなたが間違ったことをしたことを意味していると確信しています...

別のメモ: データテーブルを埋めているようです。呼び出し中に、何かを文字列値に変換しようとしています..失敗しています。

戻ってきた列を調べて、文字列表現に変換できない列があるかどうかを確認する必要があります。たぶん、バイナリ値または null 値、またはそのようなものです。

于 2010-05-04T20:00:44.730 に答える
3

通常、ADO.NET DataSet/Table/Adapter の入力中に発生するスレッド アボート例外は、データを取得するために使用された手段のタイムアウトよりも長くクエリが実行されたために発生します。

あなたの場合、直接の SQL Server 接続を使用しているように見えるので、SQL コマンドのCommandTimeoutプロパティを、クエリに対応するのに十分大きな値に設定してみてください。または、クエリやアプリケーション アーキテクチャを微調整して、パフォーマンスを向上させます。

于 2010-05-05T19:15:23.667 に答える