適用於:SQL Server
Azure SQL Database
Azure SQL Managed Instance
Microsoft Fabric 中的 SQL 資料庫
大規模的索引作業會產生大量資料載入,而造成交易記錄檔迅速填滿。 若要確保索引作業可以復原,在索引作業完成之前,無法截斷交易記錄檔;不過,可以在索引作業期間備份日誌。 因此,交易記錄檔必須有足夠空間來儲存索引作業交易,以及索引作業期間的任何並行使用者交易。
不管是離線或線上索引作業都是如此。 由於在離線索引作業期間無法存取基礎資料表,因此使用者交易可能很少,而且記錄可能不會快速成長。 線上索引作業不會防止並行使用者活動,因此,大規模線上索引作業與大量並行使用者交易相結合,可能會導致交易記錄持續成長,而沒有截斷記錄的選項。
建議
當您執行大規模的索引作業時,請考慮下列建議:
在線上執行大規模索引操作之前,請確保交易日志已備份並截斷,並且日誌有足夠的空間來儲存預期的索引和使用者交易。
請考慮將索引作業的選項設為
SORT_IN_TEMPDBON。 這樣可將索引交易與並行使用者交易區分開來。 索引交易儲存在tempdb的事務日誌中,用戶併發交易則儲存在使用者資料庫的事務日誌中。 這容許在必要時,在索引作業期間截斷使用者資料庫的交易記錄檔。 此外,如果記錄檔tempdb與使用者資料庫記錄檔不在相同的磁碟上,則這兩個記錄檔不會競爭相同的磁碟空間。注意
確認
tempdb資料庫和交易記錄檔有足夠的磁碟空間來處理索引作業。tempdb在索引作業完成之前,無法截斷交易記錄。使用資料庫復原模式,可使索引作業的記錄量減至最少。 這可能會減少日誌的大小,並防止日誌填滿日誌空間。
請勿在明確交易中執行線上索引作業。 在明確交易結束之前,記錄不會被截斷。