使用 Microsoft 登入
登入或建立帳戶。
您好:
選取其他帳戶。
您有多個帳戶
選擇您要用來登入的帳戶。

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

徵兆

請試想下列案例:

  • 您在電腦上安裝 Microsoft SQL Server 2005、Microsoft SQL Server 2008 或 Microsoft SQL Server 2008 R2。

  • 一或多個資料庫處於完整或大量記錄的復原模型中。

  • 資料庫的交易記錄檔初始大小很小。 不過,交易檔案會變得很大。

  • 交易記錄檔的自動成長增量設定為小型。 例如,自動增加增量設定為 1 MB 或 1%。 或者,您也可以使用小型手動成長來增加交易記錄檔。

  • 交易記錄檔會隨著小幅增加而增加。 一段時間後,交易記錄檔會很大。

    例如,交易記錄檔從 100 MB 增加到 10 GB。 交易記錄檔在每次成長時都會增加一百萬二千萬位元組。

在此案例中,您可能會遇到下列問題:

  • 如果要復原大量工作,則資料庫啟動時的資料庫復原速度會很慢。

    例如,交易會等待開啟很長一段時間。 或者,當SQL Server關機或重新開機時,不會發生大量小型交易。 在此情況下,您可能會在分析階段、復原階段或重做階段中收到長估計復原時間的錯誤。 錯誤與下列類似,且會記錄在 SQL Server 2005 錯誤記錄檔中:

    分析資料庫「mydatabase」 (7) 完成 0%, (大約 1234 秒仍) 。 這是僅限資訊的郵件。 不需要使用者動作。

  • 如果資料庫連線至線上,則完整資料庫備份檔案及其他交易記錄順序還原時,資料庫復原速度會很慢。

    注意 若要在還原作業期間將資料庫連線至線上,請使用 WITH RECOVERY 語法或 WITH STANDBY = <選項> 語法。

  • 在鏡像配對中的合作夥伴伺服器上,資料庫鏡像復原速度很慢。

  • 進行交易性複寫之記錄程式代理程式的進度緩慢,適用于下列作業:

    • 系統會剖析發行者資料庫的交易記錄。

    • 命令會新增至通訊資料庫。

    • 交易隨即複製。

  • 如果記錄了許多交易,或是交易記錄持續使用很長一段時間,資料庫快照集建立時,就會發生效能緩慢的情況。 發生此問題是因為快照集必須執行復原,且必須回復交易記錄。

  • 當您使用 DBCC CHECKDB 語法建立隱藏的資料庫快照集,而該快照集必須完全復原資料庫快照集才能執行一致性檢查時,就會發生效能緩慢的情況。

原因

發生這些問題的原因在於,當SQL Server在下列作業期間掃描這些 VLF 時,交易記錄檔中的虛擬記錄檔 (VLFs) 可能會導致效能變慢:

  • 資料庫復原

  • 資料庫鏡像

  • 資料庫快照集

  • 資料庫事務性複寫記錄程式活動

當資料庫的交易記錄檔在極端成長狀況期間以小幅度遞增而增加時,數千到數十萬個 VLF 會出現在單一一組交易記錄檔 (.ldf) 檔案中。 不過,相較地,大量記錄檔成長只會建立多個 VLF。 例如,數個可能小於 100 個 VLF。

注意 VLF 是交易記錄檔中SQL Server內部使用的部門或區段。
 

解決方案

累積更新資訊

SQL Server 2008 R2


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

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

981356 SQL Server 2008 R2 發行後發行的 SQL Server 2008 R2 組建

SQL Server 2008 Service Pack 1

此問題的修正程式最初是在 SQL Server 2008 Service Pack 1 的累積更新 12 中發行。

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

970365 SQL Server 2008 Service Pack 1 發行之後發行的 SQL Server 2008 組建,SQL Server 2008 Hotfix 是針對特定的SQL Server Service Pack 所建立。 您必須將 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 的累積更新 2 中發行。

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

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

SQL Server 2005 Service Pack 3

此問題的修正程式最初是在 SQL Server 2005 Service Pack 3 的累積更新 13 中發行。

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

960598 SQL Server 2005 Service Pack 3 發行之後發行的 SQL Server 2005 組建,SQL Server 2005 Hotfix 是針對特定的SQL Server Service Pack 建立。 您必須將 SQL Server 2005 Service Pack 3 hotfix 套用至 SQL Server 2005 Service Pack 3 的安裝。 根據預設,SQL Server Service Pack 中提供的任何 hotfix 都包含在下一個 SQL Server Service Pack 中。
 

SQL Server 2005 Service Pack 4

此問題的修正程式最初是在 SQL Server 2005 Service Pack 4 的累積更新 1 中發行。

注意:由於組建是累積的,因此每個新的修正版本都包含所有 Hotfix 以及先前的 SQL Server 2005 修正程式版本中包含的所有安全性修正。 Microsoft 建議您考慮套用包含此 Hotfix 的最新修正程式版本。

您必須將 SQL Server 2005 Service Pack 4 hotfix 套用至 SQL Server 2005 Service Pack 4 的安裝。 根據預設,SQL Server Service Pack 中提供的任何 hotfix 都包含在下一個 SQL Server Service Pack 中。

狀態

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

因應措施 

安裝此 hotfix 並重新啟動SQL Server可能會改善復原效能。 例如,安裝此 Hotfix 並重新啟動之後,下列作業的效能可能會有所改善SQL Server:

  • 資料庫復原

  • 資料庫鏡像

  • 資料庫快照集

  • 資料庫事務性複寫記錄程式活動


如果您無法安裝此 Hotfix,您可以執行下列因應措施,以降低現有問題並避免日後發生。

減輕現有問題

  • 等待還原或復原作業完成

    如果您的非復原資料庫在還原或復原資料庫時效能變慢,您可能需要等待還原或復原作業完成。 例如,您可能會看到非復原資料庫的離線狀態或SQL Server Management Studio (SSMS) 中的復原狀態。 停止SQL Server通常無法解決緩慢的復原問題,而且可能需要更多時間重複相同的復原分析階段、取消復原階段或復原階段。

  • 避免還原包含數千個 VLF 的

    交易記錄順序 如果您在使用備份檔案還原及復原資料庫時遇到效能緩慢的情形,您可以避免還原包含數千個 VLF 的交易記錄順序。 若要找出記錄最多虛擬記錄檔的備份檔案,請使用下列語句在記錄備份檔案中查看FirstLSNLastLSN欄:
    從 DISK='C:\folder\file.trn'

    還原 HEADERONLY 您可以決定避免還原記錄備份檔案。 或者,您可以使用 [還原] 命令中的 STOP AT 語句,避免交易記錄高度分散的部分。 如果您未在失敗復原案例期間完全還原記錄順序到最新時間點,資料庫SQL Server中會發生資料遺失。 發生此資料遺失的原因,並非所有交易都會保留。 因此,有一項商務取捨決定。 您可以完全還原高度分散的交易記錄。 不過,這項作業可能需要數小時。 或者,您可以在復原中使用 STOP AT 語句,在記錄高度分散的部分之前停止復原。 不過,任何您省略的交易遺失都會遺失。

    注意 若未安裝此 Hotfix,在重新開機之後,通常無法安全地重新存取快速修復SQL Server。 SQL Server必須找出 VLF 清單來分析記錄檔、取消復原完成的交易,然後復原未完成的交易以完成復原,讓資料庫安全地上線。 您無法在復原期間安全地略過交易。

防止日後出現

  • 將資料庫的自動增量設定為適當的大小

    如果自動增加的大小太小,會有許多虛擬記錄檔 (VLF) ,而您可能會遇到SQL Server效能緩慢的情形。 如果自動增加的大小太大,讓交易記錄自動增加的查詢可能必須等待很長的時間才能完成成長。 因此,SQL Server 可能會發生逾時錯誤。 若要解決這些問題,您可以將資料庫的自動增量大小設定為適當的大小。

  • 消除大量的 VLF,並使用手動成長

    如果在交易記錄中有許多 VLF,請縮減交易記錄檔的大小,並在尖峰業務之前增加,以手動成長來滿足需求。 例如,以大幅增量或單一手動成長,交易記錄會變回合理的平均大小。 因此,交易記錄的大小達到最大容量,且記錄備份檔案會經常且定期排程。 此外,可能會截斷交易記錄,且可以迴圈重複使用交易記錄的 VLF。

  • 如何手動

    縮小及增加交易記錄 若要更正有太多 VLF 的記錄檔,請依照下列步驟縮小記錄檔,並再次手動增加記錄:

    1. 如果資料庫是完整或大量記錄的復原模型,您必須備份交易記錄,才能讓作用中的 VLF 遭到截斷並重複使用。BACKUP LOG databasename TO DISK='C:\folder\log_backupfile.trn'
      如需如何使用 SSMS 備份交易記錄檔的詳細資訊,請流覽下列 Microsoft Developer Network (MSDN) 網站:

      如何使用 SSMS 備份交易記錄檔如需如何使用 Transact-SQL 語句備份交易記錄檔的詳細資訊,請流覽下列 MSDN 網站:

      如何使用 Transact-SQL 語句備份交易記錄檔

    2. 若要判斷交易記錄檔的邏輯名稱,請執行下列其中一項陳述。
      聲明 1
      exec sp_helpfile Statement 2
      從 sys.sysfiles 選取 * 若要將交易記錄檔的大小縮減為所要的大小,請使用下列程式碼:DBCC SHRINKFILE (transactionloglogicalfilename、TRUNCATEONLY)

    3. 您可以將交易記錄檔的大小增加到適當的大小。 我們建議您讓交易記錄檔的大小變成一般大小的尖峰。 因此,避免自動增加增量。 若要設定交易記錄的大小,請使用 SSMS 中的 [ 資料庫內容 ] 頁面,或使用下列 ALTER DATABASE 語法:修改檔案 ( NAME = transactionloglogicalfilenae,SIZE=newtotalsize MB)
      如需如何在 SSMS 中增加資料庫大小的詳細資訊,請造訪下列 MSDN 網站:

      如何在 SSMS 中放大資料庫如需 ALTER DATABASE 修改檔案語法的詳細資訊,請造訪下列 MSDN 網站:

      ALTER DATABASE 修改檔案語法的一般資訊

其他相關資訊

您可以檢閱 SQL 錯誤記錄檔,然後在每個交易記錄檔中找出記錄順序編號 (LSN) ,來檢查 VLF 區段的數目。 LSN 中冒號前面的第一個數位會對應到 LSN 的數位。

例如,LSN 第一封資訊郵件中的第一個數位是 1。 不過,LSN 第二則資訊郵件中的第一個數位會100001。 在此案例中,在第一封資訊郵件和第二封資訊郵件之間使用 100,000 個 VLF。 因此,記錄的分散交易記錄有許多虛擬記錄檔 (VLF,) 如下所示:
 

{Log 已備份。 資料庫:mydbname,建立日期 (時間) :2010/07/08 (12:36:46) , 第一個 LSN:1:5068:70,最後一個 LSN:1:5108:1,轉儲裝置數量:1,裝置資訊: (FILE=1,TYPE=DISK:{'C:\folder\logbackup1.trn'}) 。 這是僅限資訊的郵件。 不需要使用者動作。

記錄已備份。 資料庫:mydbname,建立日期 (時間) :2010/07/08 (15:36:46) , 第一個 LSN:100001:5108:1、最後一個 LSN:100002:5108:1、轉儲裝置數量:1、裝置資訊: (FILE=2、TYPE=DISK:{'C:\folder\logbackup2.trn'}) 。 這是僅限資訊的郵件。 不需要使用者動作。}

下表提供有關產品或工具的詳細資訊,這些產品或工具會自動檢查您在SQL Server實例和評估規則之SQL Server版本中的「症狀」一節中所述的條件。
 

規則軟體

規則標題

規則描述

評估規則的產品版本

System Center Advisor

SQL Server使用事務性複寫時,記錄程式代理效能可能會因為交易記錄的大小或 VLF 的數目而受到影響

在此SQL Server實例顧問偵測到目前狀態交易複寫的 VLF 或 TLOG 大小大幅增加。 記錄閱讀程式代理程式效能會受到交易記錄或 VLF 數量的大小所負面影響。 縮減交易記錄檔大小和 VLF 的數目,以改善記錄閱讀程式代理程式的效能。

SQL Server 2008

SQL Server 2008 R2

SQL Server 2012



 

參考

如需交易記錄實體架構的詳細資訊,請流覽下列 MSDN 網站:

關於交易記錄

實體結構的一般資訊 如需 LSN) (記錄順序編號的詳細資訊,請流覽下列 MSDN 網站:

記錄序列數位的一般資訊

如需資料庫鏡像啟動時 1413 錯誤的詳細資訊,請流覽下列 MSDN 網站:

資料庫鏡像啟動

時 1413 錯誤的一般資訊 如需記錄檔結構如何影響資料庫復原時間的詳細資訊,請流覽下列 MSDN 網站:

記錄檔結構如何影響資料庫復原時間

如需有關交易記錄 VLF 的詳細資訊,請造訪下列 MSDN 網站:

關於交易記錄檔

的一般資訊 如需有關如何建立資料庫快照集的詳細資訊,請流覽下列 MSDN 網站:

如何建立資料庫快照集如需適用于SQL Server之增量維護模型的詳細資訊,請按一下下列文章編號以檢視 Microsoft 知識庫中的文章:

935897 SQL Server小組提供增量維護模型,以提供回報問題的 Hotfix 如需SQL Server更新命名架構的詳細資訊,請按一下下列文章編號以檢視 Microsoft 知識庫中的文章:

822499新的 Microsoft SQL Server 軟體更新套件命名架構 如需軟體更新術語的詳細資訊,請按一下下列文章編號以檢視 Microsoft 知識庫中的文章:

824684 描述 Microsoft 軟體更新所使用的標準術語說明

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。

這項資訊有幫助嗎?

您對語言品質的滿意度如何?
以下何者是您會在意的事項?
按下 [提交] 後,您的意見反應將用來改善 Microsoft 產品與服務。 您的 IT 管理員將能夠收集這些資料。 隱私權聲明。

感謝您的意見反應!

×