大量匯入採用最低限度記錄的必要條件
只有以大量記錄復原模式或簡單復原模式執行時,才能對大量匯入作業使用最低限度記錄。對於使用完整復原模式的資料庫,大量匯入所執行的所有資料列插入作業,都會完整記錄在交易記錄檔中。若使用完整復原模式,大型的資料匯入作業可能會使交易記錄檔很快就填滿。相對地,若使用最低限度記錄,則可降低大量匯入作業填滿記錄檔空間的可能性。最低限度記錄也比完整記錄更有效率。資料庫必須使用大量記錄復原模式 (若資料庫通常使用完整復原) 或簡單復原模式,才能採用最低限度記錄。
附註: |
---|
如需在完整復原模式與大量記錄復原模式之間切換的詳細資訊,請參閱<從完整或大量記錄復原模式進行切換>。 |
最低限度記錄的資料表需求
使用最低限度記錄時,目標資料表必須完全符合下列條件:
- 資料表未被複寫。
- 已指定資料表鎖定 (使用 TABLOCK)。
如需詳細資訊,請參閱<控制大量匯入的鎖定行為>。
附註: |
---|
雖然在最低限度記錄的大量匯入作業期間,交易記錄檔中不會記錄資料插入,但每當有新的範圍配置到資料表時,Database Engine 仍會記錄範圍配置。 |
資料表中的索引
資料表是否能產生最低限度記錄,還需視資料表是否已建立索引而定,若已建立索引,則需考量資料表是否為空白,如下所示:
- 若資料表沒有索引,則資料頁會使用最低限度記錄。
- 若資料表沒有叢集索引,但有一或多個非叢集索引,則資料頁會一律使用最低限度記錄。但索引頁的記錄方式,則取決於資料表是否空白,如下所示:
- 若資料表空白,則索引頁會使用最低限度記錄。
- 若資料表不是空白,則索引頁會使用完整記錄。
附註: 若一開始您以空白資料表與多個批次來進行大量匯入資料,則在第一個批次中,索引頁與資料頁都會使用最低限度記錄,但從第二個批次開始,就只有資料頁會使用最低限度記錄。 - 若資料表有叢集索引但為空白,則資料頁與索引頁都會使用最低限度記錄。
相對地,若資料表有叢集索引且並非空白,則不論復原模式為何,資料頁與索引頁都會使用完整記錄。附註: 若一開始您以空白資料表與多個批次來進行大量匯入資料,則在第一個批次中,索引頁與資料頁都會使用最低限度記錄,但從第二個批次開始,只有資料頁會使用大量記錄。
如需詳細資訊,包括進行大量匯入作業期間資料表鎖定和記錄行為的摘要,請參閱<最佳化大量匯入效能>。
最佳作法 當您使用大量記錄復原來匯入大量的資料表資料列時,請考慮將大量匯入分散到多個批次中。每個批次等同於一筆交易。因此,當某個批次完成時,其記錄檔即可進行備份。用來大量匯入該資料列批次的記錄檔空間,會被下一個記錄備份回收。
請參閱
概念
其他資源
bcp 公用程式
BULK INSERT (Transact-SQL)
OPENROWSET (Transact-SQL)
BACKUP (Transact-SQL)
ALTER DATABASE (Transact-SQL)
SuspendIndexing Property
UseBulkCopyOption Property