修正: System.Data.Index.CompareRecords 方法會產生 System.NullReferenceException 例外狀況當您嘗試使用程式碼來修改資料表格中的記錄。NET Framework 2.0 架構的應用程式

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:940932
徵狀
請考慮下列案例。在 Microsoft。NET Framework 2.0 架構的應用程式,您將繫結至資料資料表的應用程式。接下來,您會從資料表移除資料行。然後,您嘗試使用程式碼來修改這個資料表中資料的記錄。在這個案例中, System.Data.Index.CompareRecords 方法會產生 System.NullReferenceException 例外狀況。

如果下列情況之一是,則為 true,就會發生這個問題:
  • 您從資料表移除主索引鍵。
  • 從資料表中移除條件約束集合。
  • AllowDBNull 資料行的屬性設定為"false",並移除此資料行。
  • 唯一 資料行] 屬性設定為 true,而且您移除此資料行。
發生的原因
之所以發生這個問題,是因為內部索引參照已移除該資料行。
解決方案

Hotfix 資訊

現在可以從 Microsoft 取得支援的 hotfix。不過,它被用來修正本文中所述的問題。只套用發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果您不會嚴重受到這個問題,我們建議您等候下一步]。NET Framework 2.0 服務包含此 hotfix 的套件。

若要立即解決這個問題,請連絡 Microsoft 客戶支援服務 」 取得 hotfix。如需 Microsoft 客戶支援服務電話號碼和支援費用的相關資訊的完整清單,請造訪下列 Microsoft 網站:附註 在特殊情況下,如果 Microsoft 支援專業人員認為某特定更新程式可以解決您的問題,可能就收取通常因支援電話所產生的費用。收取支援費用會套用到其他支援問題的特定更新程式檔案無法解決的問題。

必要條件

您必須先安裝這個 hotfix 安裝 hotfix 916002。如需詳細資訊,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
916002當您嘗試使用在 ADO 中的 SqlClient 類別修正程式: 錯誤訊息。NET 2.0 架構的應用程式連接到 SQL Server 2005 的執行個體: 「 新的要求不允許啟動,因為它應包括有效的交易描述項 」

重新啟動需求

套用此 hotfix 之後,您必須重新啟動電腦。

Hotfix 取代資訊

此 hotfix 不會取代任何其他 hotfix。

檔案資訊

此 hotfix 的英文版具有檔案屬性 (或較新的檔案屬性) 下表中所列。其日期和時間,這些檔案會列出在國際標準時間 (UTC)。當您檢視檔案資訊時,它會轉換成當地時間。若要尋找要查看 UTC 與本地時間之間的差異,請使用 時區 在索引標籤 日期和時間 在控制台中的項目。
檔案名稱檔案版本檔案大小日期時間平台
Mscordacwks.dll2.0.50727.916802,3042007 年 8 月 04 日03: 28x86
Mscorjit.dll2.0.50727.916326,6562007 年 8 月 04 日03: 28x86
識別2.0.50727.9164,308,9922007 年 8 月 04 日03: 28x86
Mscorpe.dll2.0.50727.916102,9122007 年 8 月 04 日03: 28x86
Mscorwks.dll2.0.50727.9165,634,5602007 年 8 月 04 日03: 28x86
Normalization.dll2.0.50727.91615,3602007 年 8 月 04 日03: 28x86
Peverify.dll2.0.50727.916136,1922007 年 8 月 04 日03: 28x86
Sos.dll2.0.50727.916382,4642007 年 8 月 04 日03: 28x86
System.data.dll2.0.50727.9162,903,0402007 年 8 月 04 日03: 28x86
其他可行方案
若要解決這個問題,請建立新的資料資料表。
狀況說明
Microsoft 已確認這是在 「 Microsoft 產品資料 」 適用於 」 一節中所列的問題。
其他相關資訊
您套用此 hotfix 之後,您無法移除資料行時 DataView.RowFilter 屬性 (含) DataView.Sort 屬性參考該資料行。

如需詳細資訊 System.NullReferenceException 例外狀況,請造訪下列 Microsoft 網站:如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
編號 824684 用來描述 Microsoft 軟體更新標準術語的說明

呼叫堆疊資訊

07d0e4b8 09195ccd System.Data.Index.CompareRecords(Int32, Int32)07d0e4d8 09195c7a System.Data.Index+IndexTree.CompareNode(Int32, Int32)07d0e4e4 0ff93c0e System.Data.RBTree`1[[System.Int32, mscorlib]].SearchSubTree(Int32, Int32)07d0e4fc 0ff940e8 System.Data.RBTree`1[[System.Int32, mscorlib]].GetNodeByKey(Int32)07d0e514 0ff93ee9 System.Data.Index.RecordStateChanged(Int32, System.Data.DataViewRowState, System.Data.DataViewRowState, Int32, System.Data.DataViewRowState, System.Data.DataViewRowState)07d0e548 09193e97 System.Data.DataTable.RecordStateChanged(Int32, System.Data.DataViewRowState, System.Data.DataViewRowState, Int32, System.Data.DataViewRowState, System.Data.DataViewRowState)07d0e598 09191fb7 System.Data.DataTable.SetNewRecordWorker(System.Data.DataRow, Int32, System.Data.DataRowAction, Boolean, Int32, Boolean, System.Exception ByRef)07d0e648 0ff93e29 System.Data.DataTable.SetNewRecord(System.Data.DataRow, Int32, System.Data.DataRowAction, Boolean, Boolean)07d0e664 09191485 System.Data.DataRow.EndEdit()07d0e690 0955c905 System.Data.DataRow.set_Item(System.Data.DataColumn, System.Object)07d0e6cc 0ff9e55a System.Data.DataRow.set_Item(Int32, System.Object)

警告:本文為自動翻譯

內容

文章識別碼:940932 - 最後檢閱時間:05/28/2011 02:06:00 - 修訂: 2.0

Microsoft .NET Framework 2.0

  • kbexpertiseadvanced kbfix kbqfe kbmt KB940932 KbMtzh
意見反應