Interface & Features — Log Reader

Walk through the main screens, tabs, and controls you will use day to day.

Log Entries Tab

This is the main grid. Every row represents a single log record. Rows are sorted newest first by default.

Log Entries tab with filters, colored operations, and the boxed Before / After button on each DML row

Toolbar

  • Source — Online database, transaction log (.ldf), full backup (.bak), or log backup (.trn). Browse picks a file for the last three. Switching back to Online clears the file.
  • Export — CSV, Excel (SpreadsheetML .xls), HTML report, or recovery SQL from File or the Export ▾ menus.
  • Clear — Clear all loaded data.
  • Statistics bar — Shows Total entries loaded, Insert (I), Update (U), Delete (D) counts, and total log size.
  • Operation checkboxes — Toggle Insert, Update, Delete, DDL, and Transaction boundary rows on or off instantly without re-reading the log.
  • Search box — Type to filter by table name, login, transaction ID, LSN, operation, or description. Press Search or hit Enter.
  • Apply / Reset — Apply the current duration/date/LSN filter or reset all filters to defaults.

Grid Columns

ColumnDescription
#Row sequence number in the result set (1 = oldest, higher = newer — stored in log order).
LSNLog Sequence Number — the unique identifier of this log record in the transaction log.
Transaction IDIdentifies which transaction this row belongs to. Rows with the same Transaction ID are part of the same logical unit of work.
OperationHuman-readable name: INSERT, UPDATE, DELETE, CREATE TABLE, ALTER TABLE, BEGIN TRAN, COMMIT, etc. Color-coded by category.
CategoryBroad type: Insert, Update, Delete, DDL, or Transaction.
TableThe user table affected, shown as schema.table when the schema is known (blank for transaction boundary rows like BEGIN TRAN / COMMIT).
SchemaSchema name of the affected table (e.g., dbo or dblense_wt). Point-in-Time Recovery uses this so it does not default a non-dbo table to dbo.
LoginThe SQL Server login that initiated this operation.
TimeTimestamp of the log record.
Txn NameThe transaction name as recorded in the log (e.g., INSERT EXEC, CREATE TABLE).
SizeSize of this log record in bytes.
DescriptionRaw description string from the log record, including LSN timestamp and binary context.

Operation Color Coding

ColorCategoryOperations shown
GreenInsertINSERT rows added to a table
OrangeUpdateUPDATE rows modified in a table
RedDeleteDELETE rows removed from a table
BlueDDLCREATE TABLE, ALTER TABLE, DROP TABLE, TRUNCATE TABLE, etc.
GrayTransactionBEGIN TRAN, COMMIT, ROLLBACK boundary markers

Tip: Click any DML row to load its row-level undo/redo scripts in the panel below the grid. Click the boxed Before / After button (document icon with a border and background, tooltip Open Before / After data changes) on a DML row to open the Data Changes popup.


Row-Level Scripts Panel

When you click a log entry in the grid, the panel at the bottom of the Log Entries tab shows scripts for that individual row:

  • Undo Script tab — T-SQL to reverse this specific operation. For an INSERT this is a DELETE; for a DELETE this is an INSERT; for an UPDATE this restores the original values.
  • Redo Script tab — T-SQL to replay this operation as it originally happened.
  • Copy Undo / Copy Redo — Copy the script to clipboard for immediate use in SSMS.
  • Open in editor — Writes a temp .sql file and opens it in SSMS or whatever app handles .sql on this machine. Log Reader does not execute the script.

Scripts are only available for INSERT, UPDATE, and DELETE rows. Selecting a transaction boundary row (BEGIN TRAN / COMMIT) or a DDL row shows an explanatory message instead of a script. For table-level recovery, use Point-in-Time Recovery on the Log Entries page. For a whole transaction, use Transaction Recovery.

Where possible, UPDATE scripts use %%physloc%% live-row lookup to recover primary keys and unchanged columns that the log alone does not contain. Review any lookup warnings in the generated script before executing.

Log Entries bottom panel with generated Undo and Redo T-SQL for the selected DML row, plus Copy Undo and Copy Redo
Review before you run. Undo/redo scripts are generated from binary log records, not from the original T-SQL. Always generate both Undo and Redo while the data is still in its current (after-change) state, save the files, then test on a copy. See Undo / Redo script limits.

Data Changes Popup

Click the boxed Before / After button on a DML row in Log Entries to open a popup with decoded before/after values:

Before / After dialog showing column names, old and new values, changed markers, and a hex dump of the log record
  • Column name, data type, old value, new value, and a changed (Δ) marker
  • Hex / binary dump of the underlying log record for forensic review
  • Useful for verifying exactly what data was modified before generating an undo script

Note: Column decoding works best when the table still exists with a compatible schema. If the table was dropped or columns were renamed/removed, decoding may be partial or unavailable.


Transactions Tab

Groups log entries into logical transactions — a higher-level view showing what each unit of work did as a whole. Select a row to fill the Transaction properties pane on the right (ID, name, login, SID, status, begin/end, duration, begin/end LSN, tables, DML counts, and alert reason).

Transactions tab with a selected transaction and the properties pane showing LSNs, login, SID, duration, and tables

Transaction Grid Columns

ColumnDescription
Transaction IDUnique identifier for this transaction in the log.
NameTransaction name as recorded at BEGIN (e.g., INSERT EXEC, CREATE TABLE, user-defined name).
LoginSQL Server login that ran this transaction.
StatusCommitted, Rolled Back, or Active.
BeginWhen the transaction started.
DurationHow long the transaction took (ms, sec, or min).
INS / UPD / DELCount of INSERT, UPDATE, and DELETE row operations in this transaction.
TotalTotal log entries in this transaction.
EntriesNumber of log records (including boundary rows).
TablesComma-separated list of affected user tables.

Transaction Entries Detail Panel

Click a transaction row to expand the detail panel at the bottom. This shows every individual log record belonging to that transaction, including the BEGIN TRAN and COMMIT rows. Affected tables are listed as schema.table.

Undo & Redo Buttons

  • Undo (Rollback) — Generates a T-SQL script that reverses all DML operations in the selected transaction in reverse order. The script opens in the Transaction Recovery panel on the right.
  • Redo (Replay) — Generates a T-SQL script that replays all DML operations in the selected transaction in original order. It uses the same panel.
Transactions tab with Transaction Recovery side panel showing generated undo T-SQL and Undo / Redo buttons

Transaction Isolation

You can isolate one or more transactions to generate a combined recovery script:

  1. Select a transaction and click Isolate Selected. Repeat for additional transactions.
  2. The N isolated counter shows how many are queued.
  3. Click Generate Undo for Isolated to produce a single combined undo script covering all isolated transactions.
  4. Click Clear All to reset the isolation queue.

Point-in-Time Recovery

Point-in-time recovery lives on the Log Entries page. Click Point-in-Time Recovery in the toolbar to open a panel from the right. Stay on the log rows while you pick a table and time.

  1. Read the log, then click Point-in-Time Recovery.
  2. Select the Table (if a log row or transaction is selected, that table is pre-filled as schema.table, for example dblense_wt.Probe rather than dbo.Probe).
  3. Set the target Date and Time.
  4. Click Generate PIT Script.
  5. Copy or export the script, review it in SSMS, then run it.

The tool finds committed transactions on that table whose commit time is after your target, then emits undo T-SQL for each DML row (same decode path as transaction undo). The script is wrapped in BEGIN TRY / BEGIN CATCH.

Point-in-Time Recovery side panel with schema.table selected, target date and time, and a generated undo script

Tip: PIT uses the full loaded transaction set (not only the filtered Transactions grid), so narrowing UI filters does not silently omit recovery candidates.

Row-level undo/redo for a single log row stays in the bottom pane on Log Entries. PIT is for restoring a whole table to a moment in time.

Transaction Recovery (Undo / Redo)

On the Transactions page, click Transaction Recovery to open a panel from the right. Select a transaction, then click Undo or Redo. You can also use the Undo / Redo buttons on the entries bar under the grid — they open the same panel.

For DML transactions (INSERT, UPDATE, DELETE), the script includes reverse or replay statements built from decoded row images. Isolation undo (multiple selected transactions) uses the same panel.

Generate Undo and Redo together before you execute either script. After undo runs, the live row is already reversed, so a redo generated later may see the old values as if they were new.

DDL Transactions

When you select a DDL transaction (CREATE TABLE, ALTER TABLE, DROP TABLE, TRUNCATE) and click Undo, the Transaction Recovery panel shows a diagnostic block instead of executable DML — because SQL Server’s transaction log does not store the original DDL text in a decodable form. The diagnostic block includes:

  • The DDL operation type (e.g., CREATE TABLE)
  • A ready-to-run SQL query to identify which object was affected at that timestamp
  • The appropriate manual reversal hint (e.g., DROP TABLE [schema].[tableName] to undo a CREATE)

See DDL in the Log for a full explanation.

Export Buttons

There is no separate Recovery tab. Use Export ▾ on Log Entries and on Transactions, or File → Export:

  • Log as CSV — Export the current log entries (Log Entries page).
  • Excel — SpreadsheetML workbook of the current log entries.
  • HTML Report — Dark-themed HTML report with summary, entries, and transactions (capped at 5,000 rows; you are warned if truncated).
  • Transactions CSV — Export the transaction summary (Transactions page).
  • Recovery SQL / Export .sql — Save the generated PIT or undo/redo script from the side panel.
  • Open in editor — Open that script in SSMS or the default .sql app. The tool never runs it against the database.
  • Save / Open Investigation — File menu JSON of source and filters only.

Analysis Tab

The Analysis tab groups three investigative views in one place (sub-tabs):

  • Summary — Counts and breakdowns for the loaded window
  • Timeline — Chronological DML transactions with ⚠ alert flags
  • Row History — Lifecycle of individual rows by table / key

Timeline & Alerts

Under Analysis → Timeline, each DML-bearing transaction appears in time order so you can scan activity quickly. An info icon (🛈) in the header and a blue banner explain the alert rules.

Grid columns

ColumnDescription
TimeTransaction begin timestamp.
TransactionTransaction ID.
OperationsCompact counts, e.g. 12I / 3U / 105D (insert / update / delete).
TablesAffected user tables.
LoginLogin that ran the transaction.
StatusCommitted / rolled back / active summary text.
⚠Warning glyph when an alert rule matches. Hover for the exact reason.
Alert DetailsHuman-readable reason (e.g. Mass delete: 250 rows).

Alert / risky flags

Alerts are heuristics for review — they do not auto-recover or block anything. They help you spot risky patterns fast:

FlagWhen it appearsWhy it matters
Mass delete More than 100 DELETE operations in one transaction Often an accidental DELETE without a tight WHERE, a bulk purge, or a cascading cleanup. Review the Transactions tab and consider undo/PIT recovery.
Large transaction More than 1,000 total DML operations (insert + update + delete) Large batches can lock heavily, bloat the log, or indicate ETL / migration jobs worth auditing. Prefer reviewing before mass undo.
Open (uncommitted) Transaction status is still Active The unit of work has not committed or rolled back in the loaded window. Undo/redo of an open transaction is usually the wrong tool — wait or investigate the session in Activity Monitor / SSMS.
Long-running Committed duration of 60 seconds or more Long transactions hold locks and keep log reuse from truncating. Review whether the job should be batched.

When more than one rule matches, the Alert column lists every reason (for example mass delete and large transaction together).

Timeline respects the same duration / date / table / login filters as Log Entries. Click Apply after changing filters to refresh Timeline with the rest of the UI.


Summary

Under Analysis → Summary, a statistical overview of the loaded log data:

  • Total log entries, total transactions, and DML operation counts (Insert / Update / Delete / DDL)
  • First and last entry timestamps covering the loaded window
  • Total log data size
  • Per-table breakdown of operations (how many inserts, updates, deletes per table)
  • Per-login breakdown (which logins made how many changes)

Note: Summary statistics are computed from all entries read in the current session, not just the currently filtered view.


Row History

Under Analysis → Row History, track the full change history of individual rows across loaded transactions:

  • Rows are grouped by table and primary key value.
  • Each row history chain shows every INSERT, UPDATE, and DELETE that touched that specific record, in chronological order.
  • Use this to reconstruct the complete lifecycle of a record — from creation to deletion.
  • Select a history chain on the left to see the individual change events on the right with timestamps and login names.

Row history chains are built from all entries loaded in the current session.


Monitor Active Log

Polls the live database transaction log at regular intervals and shows new entries as they arrive — like a live tail of the SQL Server log. Monitoring opens in its own dialog from the toolbar button Monitor Active log (it is not a main tab).

How to use it

  1. Connect to a database (online log). You can start monitoring after a Read Log, or open the dialog and start from there.
  2. Click Monitor Active log on the toolbar (after Browse).
  3. Use the same filters as Log Entries: table, login, transaction ID, duration / date range, and Exclude system transactions.
  4. Click Start Monitoring. New log entries appear in the grid in real time. Login and time on DML rows come from that transaction’s BEGIN TRAN.
  5. Click Close (or the window X) to stop monitoring and dismiss the dialog. Stop Monitoring pauses the poll without closing the window.
Monitor Active log dialog with database picker, interval, Start Monitoring, Close, and the live entries grid

Monitor interval

The default poll interval is configurable. A shorter interval gives more real-time visibility but increases SQL Server load. For busy databases, 5–10 seconds is a good starting point.

What Monitor refreshes

Each poll appends new user DML. Ghost cleanup (SQL Server’s background delete of leftover index rows) is hidden so one user DELETE does not appear twice. Allocation-page noise (PFS/IAM) is not treated as a row change.

Clearing the file source returns the tool to online-database mode for monitoring.


Filtering

All filters are applied to the Log Entries, Transactions, and Analysis → Timeline views simultaneously. You do not need to re-read the log after changing filters — the data is re-filtered in memory.

FilterHow to use
Duration (preset) Select Last 1 Hour, Last 2 Hours, Last 4 Hours, etc. from the Duration dropdown. Click Apply to update the view.
Date Range Click the Date Range radio button and enter specific From and To date/time values for precise control.
Table Select a table from the Table dropdown (watermark: All Tables). Matches schema.table, bare table name, or allocation unit name.
Login Select a login from the Login dropdown (watermark: All Logins) to show only changes made by that user.
Transaction ID Type a transaction ID (full or partial) in the Txn field (watermark: Transaction ID) to isolate all rows from a specific transaction.
LSN Type a full or partial log sequence number. Matching rows stay visible, plus BEGIN/COMMIT markers for the same transaction. Click Apply (or Search / Read Log) after changing it.
Insert / Update / Delete Checkboxes to show or hide each DML category. Uncheck Delete to focus on inserts and updates, for example.
DDL Shows or hides DDL operations (CREATE TABLE, ALTER TABLE, DROP TABLE, TRUNCATE).
Txn Shows or hides transaction boundary rows (BEGIN TRAN, COMMIT, ROLLBACK). Hide these to focus only on data rows.
Exclude system txns When checked (default), system/background transactions are omitted at read time. Uncheck and click Read Log again to include them.
Search Free-text search across table name, login name, transaction ID, operation, and description fields. Searches as you type (press Search or Enter).

Reset restores all filters to their defaults (Last 1 Hour, all operation types visible, no text search).

The status bar names the filter that hid everything when the grid is empty (search, table, login, transaction, or duration). After an offline .trn / .ldf read, leftover search text from the live session is cleared automatically if it would hide every backup row.


Export Options

FormatWhat is exportedBest for
Log CSVAll currently filtered log entries with all columns.Importing into Excel, Power BI, or custom reporting.
ExcelThe same filtered log entries as SpreadsheetML (.xls) that Excel opens without a CSV import wizard.Quick sharing with people who live in Excel.
Transactions CSVTransaction summary grid (ID, Name, Login, Status, Duration, counts).Sharing a transaction-level audit trail.
SQL ScriptThe generated undo/redo/point-in-time T-SQL from the recovery side panel. Open in editor does the same without a save dialog.Saving and reviewing before executing in SSMS.
HTML ReportDark-themed full report with summary cards, log entry table, and transaction table. Capped at 5,000 rows for performance.Documentation, incident reports, sharing with managers.
Investigation JSONSource mode, file path, database name, and filters (including LSN). Does not store log rows or auto-run Read Log.Pausing an investigation and picking it up later on the same machine.

Light / Dark buttons sit on the left sidebar (or File → Dark Theme). The whole window, including dialogs, follows the theme.

DBLense Log Reader in dark theme after a log read