標籤:
DBCC LOGINFO
DBCC log(‘QSSys‘, TYPE=2)
go
select * from sys.fn_dblog(null,null)
select [Dirty Pages],[Minimum LSN],[Checkpoint End],[CHKPT Begin DB Version],[Checkpoint Begin],operation,CONTEXT,[Log Record Length],AllocUnitName from fn_dblog(null,null)
SELECT * FROM dbo.T_CompanyAccount WITH(NOLOCK)
Operation:當前LSN所做的操作
CurrentLSN:交易記錄中唯一標識序號
Context:操作的上下文
TransactionID:事務ID
Log Record Fixed Length:LSN所站虛擬記錄檔的固定長度
Previous LSN:前一個LSN號
AllocUntilID:所修改的那條資料所分配的單元ID
AllocUntilName:所修改的資料表名
Page ID:0001:00000121轉換成十進位:289 所以查看pageid 為289 DBCC PAGE([Pratice],1,289,3)
SlotID:資料所在資料頁面的第幾條記錄
PartitionID:資料所在資料頁面所在的分區ID
[Checkpoint Begin]:開始時間
[CHKPT Begin DB Version]:SQL SERVER 的版本 SQL SRVER 2005,2008,2012 :611,661,706
[Checkpoint End]:結束時間
[Minimum LSN]:這個第一個日誌記錄的序號(LSN)稱為最小恢複序號(min LSN)
[Dirty Pages]:髒的資料頁
Oldest Replicated Begin LSN:如果資料庫配置複製的話,那麼最老的複製起始LSN
Next Replicated End LSN:下一個複製結尾LSN
Last Distributed End LSN:最新的分髮結尾LSN
SPID:執行當前操作的進程ID
Beginlog Status:開始記錄交易記錄的狀態,這個狀態表示現時能夠正常記錄交易記錄
Begin Time:事務開始時間
Transaction Name:事務名稱
End Time:事務結束時間
Transaction Begin:記錄這個事務的begin transaction的時候的cureent LSN
Master DBID:顯示當前master資料庫的DBID
Preplog Begin LSN:啟動資料庫前的前一個交易記錄LSN
Prepare Time:準備啟動資料庫的時間
New Split Page:哪個資料頁產生了頁面分割
Rows Deleted:資料頁有多少行被刪除了
Description:描述這個事務是幹什麼的,有時候事務名稱不一定就是他所做的操作名稱,
比如這裡碰巧事務名和描述都是CREATE TABLE 如果你為這個事務命名的話,那麼只能看Description列看這個事務是做什麼的
Operation |
Context |
解釋 |
LOP_SET_BITS |
LCX_DIFF_MAP |
設定位元影像,資料:差異(Differential)備份:只備份上次完整備份後,做修改的部分。備份單位是區(Extent)。意味著某個區內即使只有一頁做了變動,則在差異備份裡會被體現.差異備份依靠一個BitMap進行維護,一個Bit對應一個區,自上次完整備份後,被修改的區會被置為1,而BitMap中被置為1對應的區會被差異備份所備份。而到下一次完整備份後,BitMap中所有的Bit都會被重設為0而這個BitMap在資料庫第7頁:DCM頁差異變更(DifferentialChangedMap,DCM)頁面他跟蹤一個檔案中的哪一個區在最新一次完整Database Backup之後被修改過。SQLSERVER用在增量備份時只對已發生資料變更的分區進行增量備份即可 |
LOP_BEGIN_XACT |
|
事務開始 |
LOP_MODIFY_ROW |
LCX_HEAP |
修改堆表中的某一行記錄 |
LOP_PREP_XACT |
|
準備啟動資料庫 |
LOP_COMMIT_XACT |
|
提交事務 |
LOP_MODIFY_ROW |
LCX_BOOT_PAGE |
修改資料庫啟動頁 |
LOP_MODIFY_HEADER |
LCX_PFS |
修改PFS頁的頁頭部資訊 |
LOP_INSERT_ROWS |
LCX_CLUSTERED |
插入資料到叢集索引的索引頁 |
LOP_INSERT_ROWS |
LCX_INDEX_LEAF |
插入資料到索引的葉子節點即資料頁 |
LOP_FORMAT_PAGE |
LCX_CLUSTERED |
重新組織叢集索引 |
LOP_DELETE_SPLIT |
LCX_CLUSTERED |
刪除叢集索引表的一行記錄引起頁面分割 |
LOP_MODIFY_HEADER |
LCX_HEAP |
修改堆表的某頁的頁頭資訊 |
LOP_BEGIN_CKPT |
LCX_NULL |
檢查點開始 |
LOP_END_CKPT |
LCX_NULL |
檢查點結束 |
LOP_SET_FREE_SPACE |
LCX_PFS |
修改PFS頁設定那個資料頁是閒置 |
LOP_ROOT_CHANGE |
LCX_CLUSTERED |
叢集索引的根節點改變 |
LOP_INSERT_ROWS |
LCX_HEAP |
插入資料到堆表 |
LOP_FORMAT_PAGE |
LCX_HEAP |
格式化堆裡的資料頁 |
Operation |
Lock Information |
解釋 |
LOP_LOCK_XACT |
HoBt 0:ACQUIRE_LOCK_SCH_M METADATA: database_id = 14 STATS(object_id = 7, stats_id = 11) |
在事務裡擷取鎖 |
在大量記錄復原模式下,在交易記錄記錄裡你會看不到對資料頁的操作,當你使用bcp ,bulk inert, select into大容量動作陳述式的時候
像的那樣修改資料和插入資料的記錄你在交易記錄記錄裡找不到的
所以大量記錄復原模式時,ldf檔案才這麽小,插入速度才這麽快
下面引用MSDN:
http://msdn.microsoft.com/zh-cn/library/ms190925.aspx可以盡量減少日誌量的操作“最小日誌記錄”是指只記錄在不支援時間點恢複的情況下恢複事務所需的資訊。 本主題介紹在大量記錄復原模式下(以及簡單復原模式下)按最小方式記錄、但在運行備份時例外的操作。 注意在完整復原模式下,所有大容量操作都將被完整地記錄下來。 但是,可以通過將資料庫暫時切換到用於大容量操作的大量記錄復原模式,最小化一組大容量操作的日誌記錄。 最小日誌記錄比完整記錄更為有效,並在大容量事務期間,降低了大規模大容量操作填滿可用的交易記錄空間的可能性。 不過,如果在最小日誌記錄生效時資料庫損壞或丟失,則無法將資料庫恢複到故障點。下列操作在完整復原模式下執行完整記錄,而在簡單和大量記錄復原模式下按最小方式記錄:大容量匯入操作(bcp、BULK INSERT 和 INSERT...SELECT)。 有關在何時對大容量匯入表按最小方式進行記錄的詳細資料,請參閱在大容量匯入中按最小方式記錄日誌的前提條件。 注意啟用事務複製時,將完全記錄 BULK INSERT 操作,即使處於大量記錄復原模式下。SELECT INTO 操作。 注意啟用事務複製時,將完全記錄 SELECT INTO 操作,即使處於大量記錄復原模式下。插入或追加新資料時,使用 UPDATE 語句中的 .WRITE 子句部分更新到大型值資料類型。 注意,在更新現有值時沒有使用最小日誌記錄。 有關大型值資料類型的詳細資料,請參閱資料類型 (Transact-SQL)。在 text、ntext 和 image 資料類型列中插入或追加新資料時的 WRITETEXT 和 UPDATETEXT 語句。 注意,在更新現有值時沒有使用最小日誌記錄。 注意不推薦使用 WRITETEXT 語句和 UPDATETEXT 語句,因此應該避免在新的應用程式中使用這些語句。如果資料庫設定為簡單或大量記錄復原模式,則無論是離線還是聯機執行操作,都會按最小方式記錄一些索引 DDL 操作。 按最小方式記錄的索引操作如下:CREATE INDEX 操作(包括索引檢視表)。ALTER INDEX REBUILD 或 DBCC DBREINDEX 操作。 注意不推薦使用 DBCC DBREINDEX 語句,因此應該避免在新的應用程式中使用該語句。DROP INDEX 新堆重建(如果適用)。 注意DROP INDEX 操作期間將始終完整記錄索引頁的釋放操作。
還可以看一下這篇文章,關於大量記錄復原模式
http://social.msdn.microsoft.com/Forums/zh-CN/958febc2-5eaf-46e4-b658-4bea087c0b0f
sqlserver log