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」開關時出現錯誤訊息:「更正稀疏檔案記錄段<編號>」