文章編號: 967963 - 上次校閱: 2009年7月24日 - 版次: 2.0

FIX: 某些資料列被刪除時使用修復方法一起使用 RepairOption.RecoverCorruptedRows 選項,在 SQL Server 2005 的精簡版和 SQL Server Compact 3.5 修復資料庫

可以下載 Hotfix下載 Hotfix
檢視和要求下載 hotfix
系統提示本文適用於您使用的作業系統之外的作業系統。與您不相關的文章內容已停用。

在此頁中

全部展開 | 全部摺疊

徵狀

在 Microsoft SQL Server 2005 精簡版或 Microsoft SQL Server Compact 3.5 時使用一起具有 RepairOption.RecoverCorruptedRows] 選項的 [修復] 方法修復資料庫, 某些資料列會意外地刪除。

解決方案

Hotfix 資訊

Microsoft 提供支援的 Hotfix。不過,此 Hotfix 旨在修正本文中所述隨問題。只會發生此特定問題的系統套用此 Hotfix。

如果此 Hotfix 可供下載,您可在本知識庫文件的頂端找到「 可用的 Hotfix 下載 」區段。如果沒有出現此區段,將要求提交到 Microsoft 客戶服務及支援],以取得該 Hotfix。

附註如果發生其他問題,或如果需要任何疑難排解,您可能必須建立個別的服務要求。和此 Hotfix 無關的額外支援問題適用一般的支援費用。如需 Microsoft 客戶服務支援部門電話號碼的完整清單或要建立個別的服務要求,請造訪下列 Microsoft 網站:
http://support.microsoft.com/contactus/?ws=support (http://support.microsoft.com/contactus/?ws=support)
附註「 下載 Hotfix 」 表單會顯示此 Hotfix 會出現,以供使用的語言。如果您沒有看到您的語言,是因為此 Hotfix 是不適用您的語言。

必要條件

安裝這個 Hotfix 沒有先決條件。

重新啟動需求

您沒有套用此 Hotfix 之後重新啟動電腦。

Hotfix 取代資訊

此 Hotfix 不會取代先前發行的 Hotfix。

檔案資訊

此 Hotfix 的英文版在檔案屬性 (或更新版本的檔案屬性) 如下列表格中所列。這些檔案的日期和時間為 Coordinated Universal Time (UTC)。當您檢視檔案資訊時,會將它轉換為當地時間。若要到 UTC 與當地時間差異使用在 [日期及時間 中項目控制台中的 [時區] 索引標籤]。
Windows CE 5.0 Armv4i 基礎的裝置,而不是 Pocket PC 裝置上的 SQL Server Compact 3.5
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Sqlce.dev.enu.wce5.armv4i.cab不適用316,63306-Mar-200903: 49不適用
Sqlce.repl.wce5.armv4i.cab不適用818,22506-Mar-200903: 49不適用
Sqlce.wce5.armv4i.cab不適用1,775,09006-Mar-200903: 49不適用
SQL Server 的 Windows CE 5.0 壓縮 3.5 Armv4i 架構 Pocket PC 裝置上
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Sqlce.dev.enu.ppc.wce5.armv4i.cab不適用104,68406-Mar-200904: 02不適用
Sqlce.ppc.wce5.armv4i.cab不適用749,79406-Mar-200904: 02不適用
Sqlce.repl.ppc.wce5.armv4i.cab不適用341,74306-Mar-200904: 02不適用
SQL Server 2005 開始壓縮版的 Windows CE 4.0 Armv4 基礎的裝置,而不是 Pocket PC 裝置上
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Sqlce30.dev.enu.wce4.armv4i.cab不適用327,40226-Jan-200906: 02不適用
Sqlce30.repl.wce4.armv4i.cab不適用760,89026-Jan-200906: 02不適用
Sqlce30.wce4.armv4i.cab不適用1,627,83026-Jan-200906: 02不適用
SQL Server 2005 精簡版的 Windows CE 4.0 Armv4 Pocket PC 裝置上
摺疊此表格展開此表格
檔案名稱檔案版本檔案大小日期時間平台
Sqlce30.dev.enu.ppc.wce4.armv4.cab不適用324,33026-Jan-200906: 00不適用
Sqlce30.ppc.wce4.armv4.cab不適用1,585,83826-Jan-200906: 00不適用
Sqlce30.repl.ppc.wce4.armv4.cab不適用739,37826-Jan-200906: 00不適用

狀況說明

Microsoft 已確認<適用於>一節所列之 Microsoft 產品確實有此問題。

其他相關資訊

如何安裝此 Hotfix

若要安裝此 Hotfix,請依照下列步驟執行:
  1. 下載您的系統的 Hotfix。
  2. 在裝置上解除安裝現有的版本或 SQL Server Compact 3.5 的 SQL Server 2005 的精簡版]。
  3. 從 Hotfix 套件解壓縮.cab 檔。
  4. 在裝置上安裝三個.cab 檔案。

開發人員的詳細資訊

您必須依照下列步驟執行,以取代您的專案使用與從 Hotfix 套件 DLL 的 DLL:
  1. 展開 [SYSTEM ~ 1.004 檔案從您的系統為.cab 檔案。

    下表列出您可以在此解壓縮 [SYSTEM.cab 檔案 ~ 1.004 檔案。
    摺疊此表格展開此表格
    平台Hotfix 名稱.cab 檔案
    Windows CE 5.0 Armv4i 基礎的裝置,而不是 Pocket PC 裝置上的 SQL Server Compact 3.5SQL_CE_35SP1_wce5_ARMV4i_3_5_5692_5Sqlce.wce5.armv4i.cab
    SQL Server 壓縮 3.5 Windows CE 5.0 Armv4i 架構 Pocket PC 裝置上SQL_CE_35SP1_wce5_PPC_ARMV4i_3_5_5692_5Sqlce.PPC.wce5.armv4i.cab
    SQL Server 2005 精簡版的 Windows CE 4.0 Armv4 Pocket PC 裝置上sql_ce_31_wce400_ppc_5300_9Sqlce30.PPC.wce4.armv4.cab
    SQL Server 2005 開始壓縮版的 Windows CE 4.0 Armv4 基礎的裝置,而不是 Pocket PC 裝置上sql_ce_31_wce400_5300_9Sqlce30.wce4.armv4i.cab
  2. 重新命名 [SYSTEM ~ 1.004 檔案為 System.Data.SqlServerCe.dll 檔案。
  3. 取代 System.Data.SqlServerCe.dll 與您在步驟 2 中取得的新 System.Data.SqlServerCe.dll 檔案安裝在您的系統的檔案。

    如果您使用的 SQL Server 2005 的精簡版,取代您在步驟 2 中取得該檔案的下列位置中的檔案:
    %ProgramFiles%\Microsoft Visual Studio 8\SmartDevices\SDK\SQL Server\Mobile\v3.0\System.Data.SqlServerCe.dll
    如果您使用的 SQL Server Compact 3.5,取代您在步驟 2 中取得該檔案的下列位置中的檔案:
    %ProgramFiles%\Microsoft SQL Server 壓縮 Edition\v3.5\Devices\System.Data.SqlServerCe.dll
  4. 如果您的專案使用指定 System.Data.SqlServerCe.dll 檔不是在步驟 3 的位置,取代 System.Data.SqlServerCe.dll 檔案在該位置。

包含在此 Hotfix 的變更

套用此 Hotfix 之後,RepairOption 列舉增強,如下所示。請仔細檢閱。
  • RecoverAllOrFail這是此 Hotfix 所引進的新選項。如果修復方法藉由使用 RecoverAllorFail 值叫用,修復將會成功只有在沒有資料遺失。如果偵測資料遺失中止復原,並且擲回例外狀況。這是慣用的選項,以確定已順利完成資料庫修復,而且沒有任何資料遺失。它是資料庫的以避免發生資料遺失和損毀修復的最有效的選項。
  • RecoverAllPossibleRows這是此 Hotfix 所引進的新選項。如果修復方法藉由使用 RecoverAllPossibleRows 值叫用,資料庫將會嘗試從損毀的頁面讀取資料。這可能會導致復原較多的資料。不過,此選項並不保證復原的資料將會損毀的任何類型的可用。因此即使下一個 驗證 呼叫上經過修復的資料庫傳回 true 值,資料庫可能包含邏輯損毀。例如外部索引鍵值可能會出現沒有對應的主索引鍵值。如果這發生外部索引限制式結構描述定義目標資料庫中的會失敗並已遺失。修復執行以這種方式來改善效能。
  • DeleteCorruptedRows如果修復方法藉由使用 DeleteCorruptedRows 值叫用,所有損毀的頁面會從資料庫捨棄。這可能會導致明顯的資料遺失。使用這個選項即使下一個 驗證 呼叫上經過修復的資料庫傳回值 ,則為 True,資料庫可能包含邏輯損毀。例如外部索引鍵值可能會出現沒有對應的主索引鍵值。如果這發生外部索引限制式結構描述定義目標資料庫中的會失敗並已遺失。修復執行以這種方式來改善效能。
  • RecoverCorruptedRows這個選項不被視為有效,並不應該被使用。請改用 RecoverAllPossibleRows。
備忘稿
  • 修復方法並不保證每一個可疑的資料庫的完整資料修復。某些形式的資料損毀無法完全,修復,無論選取的應用程式的 [修復] 選項。
  • 不論已選取修復選項,修復方法可以寫入到記錄檔案的任何資料庫不一致有關的詳細資料。這個檔案會寫入相同的目錄包含來源資料庫.sdf 檔案。應用程式或資料庫管理員應該檢查這個記錄檔,以判定產生資料庫是否有效。當應用程式並不使用 RecoverAllOrFail 選項時,這是一個重要步驟。
  • 應用程式並不會使用 RecoverAllOrFail 選項,時或資料庫管理員以驗證產生的資料庫應用程式的責任。這是藉由檢查記錄檔,以判定資料庫是否可靠而達成的。
  • 如果應用程式或使用者無法驗證結果資料庫,從一個備份還原資料庫,或以手動方式 re-construct 資料庫。在實際執行環境中使用資料庫之前您應該這麼做。

?考

如 Incremetal 維修模型的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
935897? (http://support.microsoft.com/kb/935897/ ) 累加式的維修模型是可以從 SQL Server 小組來傳遞回報問題的 Hotfix
如 SQL Server 更新命名的結構描述的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822499? (http://support.microsoft.com/kb/822499/ ) Microsoft SQL Server 軟體更新套件的新命名結構描述
如需有關軟體更新術語的詳細資訊,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
824684? (http://support.microsoft.com/kb/824684/ ) 用來描述 Microsoft 軟體更新標準術語的說明

這篇文章中的資訊適用於:
  • Microsoft SQL Server Compact 3.5
  • Microsoft SQL Server 2005 Compact Edition
關鍵字:?
kbmt kbsurveynew kbhotfixserver kbautohotfix kbexpertiseadvanced kbqfe kbfix KB967963 KbMtzh
機器翻譯機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:967963? (http://support.microsoft.com/kb/967963/en-us/ )
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。