2011-09-11 73 views
0

我想討論一下SQL Server的事務日誌,我搜索了一下,發現了一些完成的產品,例如Lumigent Log Explorer。但我仍然對此感興趣。閱讀SQL Server事務日誌的方法

方法我已知: 1.Read直接從物理日誌文件 2.使用數據庫命令/查詢,DBCC LOG或通過fn_dblog

問題/難題: 1.登錄文件結構是很難反向工程。 2.當我做很多INSERT時,fn_dblog沒有全部,例如,當我插入50000記錄時,fn_dblog只有29616個LOP_INSERT_ROWS記錄,這意味着20384條記錄被截斷了?我不知道內部邏輯關於fn_dblog,有人可以解釋它嗎?fn_dblog是否有限制?

很高興聽到一些有關SQL Server事務日誌的研究。

+1

被您可以在單個語句或50,000個單獨的語句中插入50,000行。如果是單獨的,它仍然在一個交易中?你的數據庫還有哪些恢復模式,並且它是否曾經備份過? (也許你的日誌目前處於自動截斷模式) –

+0

fn_dblog()是一個未公開的函數,使用這個函數的方法太長了,而且函數也沒有以可讀的格式顯示信息。所以最好使用像SysTools SQL Log Analyzer這樣的第三方工具,請看這裏:http://www.systoolsgroup.com/sql-log-analyzer.html –

回答

1

SQL Server事務日誌不是意味着是「人類可讀的」。它意味着支持SQL Server,允許交易,讀取一致性等等。

建議: 如果您真的想了解SQL Server內部(包括事務日誌如何工作),我強烈建議您獲取這本書:

SQL Server 2008 Internals, Kalen Delaney

這是一個很好的書;你會學到很多實用而重要的信息。滿意保證!

+0

當然,我已經閱讀了本書的某些部分,但它不是這對了解文件的結構很有幫助。 – BlackThought

3

正如paulsm4已經指出的那樣 - 事務日誌並不是人類可讀的,但可以使用第三方工具讀取它。

唯一的工具,真正的專業,這是ApexSQL Log,但你也可以嘗試Quest Toad

6

有不同的方法來打開LDF文件,其中大部分的做到這一點 - 打開它。獲取任何人類可讀信息並利用它是非常棘手的,雖然

ApexSQL日誌是一個SQL Server事務日誌讀取器,它讀取聯機事務日誌,分離的事務日誌和事務日誌備份 - 本地壓縮和本地壓縮。作爲一個LDF瀏覽器,它側重於操作(DML和DDL,45總),並列舉了由這些操作的執行改爲:Open LDF file and view LDF file content

免責聲明:在ApexSQL我的產品支持工程師工作