KB2574699 - 修正:在 SQL Server 2008 R2 或 SQL Server 2008 中,資料庫資料檔案可能被錯誤地標示為稀疏,即使實體檔案在檔案系統中被標示為非稀疏

Applies To
SQL Server 2008 R2 Developer SQL Server 2008 R2 Enterprise SQL Server 2008 R2 Express SQL Server 2008 R2 Workgroup SQL Server 2008 R2 Standard SQL Server 2008 Developer SQL Server 2008 Enterprise SQL Server 2008 Express SQL Server 2008 Standard SQL Server 2008 Workgroup

Microsoft 會發佈 Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2008 修正程式作為一個可下載的檔案。 由於修正程式是累積式,因此每個新版本都包含先前的 SQL Server 2008 R2 或 SQL Server 2008 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。

症狀

Microsoft SQL Server 2008 R2 或 Microsoft SQL Server 2008 可能會將資料庫資料檔標示為稀疏,即使實體檔案在檔案系統中已標示為非稀疏。

記事​​

  • 若要判斷資料庫資料檔是否在 SQL Server 中繼資料中標示為疏鬆,請執行下列陳述式,然後檢查結果集中的 Is_Sparse 資料行是否設定為非零值:

    
    

    用途
    <資料庫名稱>
    選取 [is_sparse],從sys.database_files physical_name

  • 若要查詢檔案系統中實體檔案的狀態,請在資料庫離線後執行下列 Windows 命令:

    
    
    fsutil sparse queryflag 
    
    <files path>\<database file>
    

    如果您收到下列輸出,表示檔案在檔案系統中會標示為疏鬆:

    此檔案設定為疏鬆。

  • 只有屬於資料庫快照集一部分的資料庫資料檔案,SQL Server 中繼資料和檔案系統中繼資料都必須標示為稀疏。

原因

發生此問題的原因是在移除原本標示為稀疏的替代資料流之後,檔案系統不正確地將整個資料庫資料檔案標示為稀疏。 當 DBCC CHECKDB 命令結束時,會移除替代資料流。

記事​​

  • 內部資料庫快照集使用量是由 DBCC CHECKDB 系列命令所使用的 NTFS 功能。 當您執行 DBCC 命令時,資料庫引擎會建立資料庫快照集替代資料流,並讓它進入交易一致狀態。 DBCC 命令會針對替代資料流執行檢查。 在 DBCC 命令完成之後,會捨棄替代資料流。

  • 造成此問題的設計是在 Windows Server 2003 中引進,其中使用 Windows 磁碟區層級備份來備份資料庫檔案。 SQL Server 中繼資料會儲存系統資料表中資料檔案的疏鬆屬性複本。 不過,從檔案系統中移除 sparse 屬性後,SQL Server不會更新Is_Sparse資訊。

  • 將資料庫從 Windows Server 2003 移轉至更新版本的 Windows 作業系統之後,也會發生這個問題。

    例如,您可以將資料庫從 Windows Server 2003 移轉至 Windows Server 2008 或 Windows Server 2008 R2。

解決方式

若要在 SQL Server 2008 R2 或 SQL Server 2008 中解決此問題,請套用下列 Hotfix,然後將資料庫上線。 當資料庫上線時,SQL Server 會檢查實體資料庫檔案的中繼資料是否在檔案系統中標示為稀疏。 如果標示為非稀疏,則會更新 SQL Server 中繼資料。

注意:若要從檔案系統移除疏鬆屬性,請複製資料庫檔案,然後為資料庫使用新的檔案副本。 如需有關此程序的詳細資訊,請造訪下列 MSDN 網站:

如何從檔案系統移除疏鬆屬性

累積更新資訊

SQL Server 2008 Service Pack 3

此問題的修正程式最初在 SQL Server 2008 Service Pack 3 的累積更新套件 1 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2617146 累積更新套件 1 適用於 SQL Server 2008 Service Pack 3 注意: 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,來自先前的 SQL Server 2008 修正程式版本。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2629969 發行 SQL Server 2008 Service Pack 3 之後所發行的 SQL Server 2008 組建Microsoft會為特定 SQL Server Service Pack 建立 SQL Server 2008 Hotfix。 您必須將 SQL Server 2008 Service Pack 3 Hotfix 套用至 SQL Server 2008 Service Pack 3 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。

SQL Server 2008 Service Pack 1

此問題的修正程式最初在 SQL Server 2008 Service Pack 1 的累積更新套件 16 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2582282 SQL Server 2008 Service Pack 1 的累積更新套件 16 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,這些修正程式都包含在上一個 SQL Server 2008 修正程式版本中。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

970365 發行 SQL Server 2008 Service Pack 1 之後所發行的 SQL Server 2008 組建Microsoft SQL Server會為特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 1 Hotfix 套用至 SQL Server 2008 Service Pack 1 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。

SQL Server 2008 Service Pack 2

此問題的修正程式最初在 SQL Server 2008 Service Pack 2 的累積更新套件 6 中發行。 如需有關此累積更新套件的詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2582285 SQL Server 2008 Service Pack 2 的累積更新套件 6 注意 由於這些組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,並包含在上一個 SQL Server 2008 修正程式版本中。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2402659 SQL Server 2008 Service Pack 2 發行之後所發行的 SQL Server 2008 組建Microsoft SQL Server會為特定 SQL Server Service Pack 建立 Hotfix。 您必須將 SQL Server 2008 Service Pack 2 Hotfix 套用至 SQL Server 2008 Service Pack 2 的安裝。 預設情況下,SQL Server Service Pack 中提供的任何 Hotfix 都會包含在下一個 SQL Server Service Pack 中。

SQL Server 2008 R2 CU9

此問題的修正程式最初在 SQL Server 2008 R2 的累積更新套件 9 中發行。 如需有關如何取得 SQL Server 2008 R2 的累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

2567713 SQL Server 2008 R2 的累積更新套件 9 注意:由於組建是累積的,因此每個新發行的修正程式都包含所有 Hotfix 和所有安全性修正程式,並包含在先前的 SQL Server 2008 R2 修正程式版本中。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

981356 在 SQL Server 2008 R2 發行之後所發行的 SQL Server 2008 R2 組建 (機器翻譯)

SQL Server 2008 R2 Service Pack 1 CU2

此問題的修正程式最初在累積更新套件 2 中發行。 如需有關如何取得 SQL Server 2008 R2 SP1 累積更新套件的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

2567714 SQL Server 2008 R2 Service Pack 1 的累積更新套件 2 注意:由於這些組建是累積的,因此每個新發行的修正程式都包含先前的 SQL Server 2008 R2 SP1 修正程式版本中包含的所有 Hotfix 和所有安全性修正程式。 建議您考慮套用包含此 Hotfix 的最新修正版本。 如需詳細資訊,請按一下下面的文章編號,檢視「Microsoft 知識庫」中的文章:

2567616 在 SQL Server 2008 R2 Service Pack 1 發行之後所發行的 SQL Server 2008 R2 組建 (機器翻譯)

Hotfix 資訊

Microsoft 提供支援的 Hotfix。 不過,此 Hotfix 僅用來修正本文所述的問題。 僅將此 Hotfix 套用至發生本文所述問題的系統。 此 Hotfix 可能會收到其他測試。 因此,若您未受到此問題的嚴重影響,建議您等待下一個包含此 Hotfix 的軟體更新。

如果 Hotfix 可供下載,本知識庫文章頂端有「可供 Hotfix 下載」章節。 如果未顯示此章節,請連絡「Microsoft 客戶服務及支援人員」以取得 Hotfix。

注意: 如果發生其他問題或需要進行任何疑難排解,您可能需要建立另外一個服務要求。 一般的支援費用將適用於不符合此特定 Hotfix 資格的其他支援問題和問題。 如需 Microsoft 客戶服務及支援服務的完整電話號碼清單,或建立個別的服務要求,請造訪下列 Microsoft 網站:

/contactus/?ws=support 注意:「Hotfix 下載可用」表單顯示 Hotfix 可用的語言。 如果您找不到您的語言,是因為該語言沒有 Hotfix。

先決條件

若要套用此 Hotfix,您必須已安裝 SQL Server 2008 R2。

重新啟動需求

套用此 Hotfix 之後,您不必重新啟動電腦。

Hotfix 取代資訊

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

檔案詳細資訊

此 Hotfix 的全域版本具有下表中所列的檔案屬性 (或更新檔案屬性) 。 這些檔案的日期與時間是以國際標準時間 (UTC) 表示。 當您檢視檔案資訊時,它會轉換成當地時間。 若要查看 UTC 與當地時間的差異,請使用 [控制台] 中 [日期和時間] 項目的 [時區] 索引標籤。

檔案名稱 檔案版本 檔案大小 日期 時間 平台
Sqlservr.exe 2009.100.1800.0 121,829,216 2011 年 7 月 8 日 1,155 IA-64
Sqlservr.exe 2009.100.1800.0 62,027,616 2011 年 7 月 8 日 1,228 x64
Sqlservr.exe 2009.100.1800.0 42,911,584 2011 年 7 月 8 日 13:22 x86

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

更多資訊

下表提供有關可在 SQL Server 執行個體以及評估規則的 SQL Server 產品版本上自動檢查此條件的產品或工具詳細資訊。

規則軟體 規則標題 規則描述 評估規則的產品版本
System Center Advisor 標示為疏鬆檔案的 SQL Server 資料庫檔案 System Center Advisor 會檢查此 SQL Server 執行個體是否包含標示為稀疏的資料庫檔案。 只有資料庫快照集檔案應標示為檔案。 如果一般資料庫檔案標記為稀疏,則 Advisor 會產生警示。 Advisor 依賴目錄檢視sys.master_files中的 [is_sparse] 欄。 檢閱顧問警示的 [收集的資訊] 區段中所提供的詳細資料,並檢查受影響檔案在作業系統層級的稀疏狀態。 清除作業系統疏鬆狀態之後,您可以套用本文中討論的 Hotfix 來重新整理 SQL Server 中繼資料並與作業系統設定同步。

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012

參考資料

如需有關 DBCC 命令的詳細資訊,請造訪下列 MSDN 網站:

DBCC 命令的一般資訊 如需有關 Fsutil 聲明的詳細資訊,請造訪下列 MSDN 網站:

關於 Fsutil 陳述式的一般資訊如需有關 Windows Server 2003 中這個問題的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

973886 在 64 位元版本的 Windows XP SP2 或 Windows Server 2003 SP2 中刪除所有具有疏鬆屬性的資料流後,您將無法還原 NTFS 檔案系統中的大型檔案

932021 當您在 Windows Server 2003 電腦上同時執行「chkdsk」命令和「/v」開關時出現錯誤訊息:「更正稀疏檔案記錄段<編號>」