Sql-Server

sql server 中的事務日誌記錄

  • December 5, 2017

根據Silberschatz數據庫系統概唸書,事務的日誌文件有 3 條記錄,

  • 1條交易開始記錄:T_i start,
  • 1 用於 write(x) 操作上的事務更改:T_i,X,V_1,V_2,其中X是已從V_1(舊值)更改為V_2(新值)的數據項。
  • 1 表示事務送出(或中止)T_i commit,.

如何在 SQL Server 中查看這些日誌記錄?如何在 SQL Server 中查看恢復階段(分析、重做和撤消)?

編輯:

評論中的給定連結將向我顯示執行事務的表日誌,例如具有刪除命令或更新命令。例如,我想展示 TransactionT_i對數據項所做的更改。

例如,T_1,A,100,150表示交易T_1已將A的值從 100 更改為 150。

基於 Silberschatz 的數據庫系統概唸書,事務的日誌文件有 3 條記錄

這是您在沒有任何優化的情況下重放和恢復單個事務所需的**最低要求。**SQL Server 中的單個 CRUD 項目可能有超過3 個。

如何在 SQL Server 中查看這些日誌記錄?

我用來查看活動日誌的是sys.fn_dblog(連結到 Remus 的日誌文章)。請注意,此函式沒有記錄,並且可以/將會更改,並且不會顯示需要使用 sys.fn_dblog_xtp 破解的 Hekaton 日誌等內容,而這又沒有記錄。

如何在 SQL Server 中查看恢復階段(分析、重做和撤消)?

經過許多小時的艱苦工作。您可以使用 sys.fn_dump_dblog() 查看在重做和撤消執行後進行的事務日誌備份。

由於除了物理和邏輯體系結構外,沒有記錄 SQL Server 日誌記錄和文件,因此您只需搜尋 Internet 並做出自己的最佳猜測。

如果您詢問是因為您想製作處理日誌的軟體,那麼您需要與 Microsoft 合作夥伴資源部取得聯繫。否則,您只能靠自己,擁有網際網路的集體知識和您最喜歡的飲料的數量。

例如 T_1,A,100,150 表示事務 T_1 已將 A 的值從 100 更改為 150。

SQL Server 日誌並不是真正的人類可讀的,儘管這些函式有幫助。我之前說過,將 100 更改為 150 並不總是那麼容易。

假設您將“Hi”更改為“Sean”。這可能會導致轉發記錄或頁面拆分。它可能是表或堆中的第一條記錄,或者由於多個索引而被更改。

我不是想讓你失望,只是學術界和現實世界,通常是兩種截然不同的東西。

引用自:https://dba.stackexchange.com/questions/192445