適用於:SQL Server
如果是完整復原模式之下的資料庫,則大量匯入執行的所有資料列插入作業,都會完整記錄在交易記錄中。 若使用完整復原模式,大型的資料匯入作業可能會使交易記錄檔很快就填滿。 相較之下,在簡單復原模式或大量記錄復原模式之下,大量匯入作業的最少記錄會減少大量匯入作業填滿記錄空間的機會。 最低限度記錄也比完整記錄更有效率。
注意
大量記錄復原模式旨在於執行大型大量作業期間,暫時取代完整復原模式。
最低限度記錄大量匯入作業的資料表需求
使用最低限度記錄時,目標資料表必須符合下列條件:
資料表沒有進行複寫。
已指定表格鎖定(使用
TABLOCK)。注意
雖然在最低記錄的大量匯入作業期間,資料插入不會記錄在交易記錄中,但每次將新的延伸範圍配置給資料表時,資料庫引擎仍會記錄延伸範圍配置。
資料表不是經記憶體最佳化的資料表。
資料表是否能產生最低限度記錄,還需視資料表是否已建立索引而定,若已建立索引,則需考量資料表是否為空白:
若資料表沒有索引,則資料頁會使用最低限度記錄。
若資料表沒有叢集索引,但有一或多個非叢集索引,則資料頁會一律使用最低限度記錄。 但索引頁的記錄方式,則取決於資料表是否空白:
若資料表為空,則索引頁只會進行最少量的記錄。 若一開始您以空白資料表與多個批次來進行大量匯入資料,則在第一個批次中,索引頁與資料頁都會使用最低限度記錄,但從第二個批次開始,就只有資料頁會使用最低限度記錄。
如果資料表為非空,則索引頁面會被完整記錄。
如果其中一個索引包含
IGNORE_DUP_KEY = ON,則索引頁和資料頁都會被完整記錄。
若資料表有叢集索引但為空白,則資料頁與索引頁都會使用最低限度記錄。 相對地,若資料表有 B 型樹狀結構叢集索引且並非空白,則不論復原模式為何,資料頁與索引頁都會使用完整記錄。 如果您從空的 rowstore 資料表開始,並分批大量匯入資料,則在第一個批次中,索引頁面和資料頁面都只會進行最少量記錄;但從第二個批次起,只有資料頁面會以大量記錄方式記錄。
注意
文件通常會使用「B 型樹狀結構」一詞來指稱索引。 在資料列存放區索引中,資料庫引擎會實作 B+ 樹狀結構。 這不適用於資料行存放區索引或記憶體最佳化資料表上的索引。 如需詳細資訊,請參閱 SQL Server 和 Azure SQL 索引架構和設計指南。
如需有關叢集資料行存放區索引 (CCI) 記錄的資訊,請參閱資料行存放區索引資料載入指引。
注意
啟用交易式複寫時,即使在大量記錄復原模式下,BULK INSERT 作業也會完整記錄下來。
相關工作
- 復原模式 (SQL Server)
- bcp 公用程式
- BULK INSERT (Transact-SQL)
- OPENROWSET (Transact-SQL)
- BACKUP (Transact-SQL)
- ALTER DATABASE (Transact-SQL)
- 表格提示 (Transact-SQL)
- INSERT (Transact-SQL)