Bạn có thể sử dụng sys.fn_dblog
để đọc nhật ký giao dịch. Ví dụ bên dưới.
SELECT [RowLog Contents 0],
[RowLog Contents 1],
[Current LSN],
Operation,
Context,
[Transaction ID],
AllocUnitId,
AllocUnitName,
[Page ID],
[Slot ID]
FROM sys.fn_dblog(NULL,NULL)
WHERE Context IN ('LCX_MARK_AS_GHOST', 'LCX_HEAP', 'LCX_CLUSTERED')
AND Operation IN ('LOP_DELETE_ROWS', 'LOP_INSERT_ROWS')
Đối với một IIRC delete
và insert
hoạt động [RowLog Contents 0]
chứa toàn bộ hàng chèn và xóa. Các bản cập nhật phức tạp hơn một chút ở chỗ chỉ một hàng có thể được ghi lại.
Để giải mã định dạng hàng này, bạn cần phải hiểu cách các hàng được lưu trữ nội bộ trong SQL Server. Cuốn sách Microsoft SQL Server 2008 Internals trình bày chi tiết này. Bạn cũng có thể tải xuống SQL Server Internals Viewer để được trợ giúp về vấn đề này (Và tôi tin rằng mã nguồn cho Mark Rasmussen 's Orca MDF cũng có sẵn, có lẽ có một số mã để giải mã định dạng hàng nội bộ).
Để biết ví dụ về việc thực hiện điều này trong TSQL, hãy xem this blog post để chứng minh rằng hoàn toàn có thể trích xuất thông tin hữu ích từ nhật ký miễn là mục đích của dự án bị giới hạn. Viết một trình đọc nhật ký thổi đầy đủ có thể đối phó với các thay đổi lược đồ trong các đối tượng và những thứ như cột thưa thớt (và các chỉ mục lưu trữ cột trong phiên bản tiếp theo) có thể là một số lượng lớn công việc.
Nguồn
2012-01-26 12:41:39
Để làm được những gì chính xác? –
bản sao có thể có của [Trình thám hiểm/nhật ký giao dịch máy chủ SQL] (http://stackoverflow.com/questions/3789443/sql-server-transaction-log-explorer-analyzer) –