To see transactions for inserted rows
SELECT [Current LSN], Context, [Transaction ID], [Begin time] [Operation], [Transaction Name], [Transaction SID], [SPID], [Begin Time] [AllocUnitName], [Page ID], [Slot ID], [End Time], [Number of Locks], [Lock Information] FROM sys.fn_dblog(NULL, NULL) WHERE operation IN('LOP_INSERT_ROWS');
-- OR WHERE Operation IN('LOP_INSERT_ROWS','LOP_MODIFY_ROW',<br>'LOP_DELETE_ROWS','LOP_BEGIN_XACT','LOP_COMMIT_XACT')
-- Or for a split page WHERE [Transaction Name]='SplitPage'
-- To see transacctions for deleted rows SELECT [begin time], [rowlog contents 1], [Transaction Name], Operation FROM sys.fn_dblog(NULL, NULL) WHERE operation IN('LOP_DELETE_ROWS');
-- To read ncative transaction log backups SELECT [Current LSN], Context, [transaction name] , Operation, [Transaction ID], Description FROM fn_dump_dblog(NULL,NULL,N'DISK',1 ,N' F:\Mybackups\InventoryDatabase_4589725r.trn', DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT,DEFAULT, DEFAULT,DEFAULT,DEFAULT,DEFAULT,DEFAULT ,DEFAULT,DEFAULT,DEFAULT, DEFAULT);
--can recover the dropped object from SQL Server log Select Convert(varchar(Max),Substring([RowLog Contents 0] ,33 ,LEN([RowLog Contents 0]))) as [Script] from fn_dblog(NULL,NULL) Where [Operation]='LOP_DELETE_ROWS' And [Context]='LCX_MARK_AS_GHOST' And [AllocUnitName]='sys.sysobjvalues.clst' Select Convert(varchar(Max),Substring([RowLog Contents 0],33,LEN([RowLog Contents 0]))) as [Script] from fn_dblog(NULL,NULL) Where [Operation]='LOP_DELETE_ROWS' And [Context]='LCX_MARK_AS_GHOST' And [AllocUnitName]='sys.sysobjvalues.clst' AND [TRANSACTION ID] IN (SELECT DISTINCT [TRANSACTION ID] FROM sys.fn_dblog(NULL, NULL) WHERE Context IN ('LCX_NULL') AND Operation in ('LOP_BEGIN_XACT') And [Transaction Name]='DROPOBJ' And CONVERT(NVARCHAR(11),[Begin Time]) BETWEEN @Date_From AND @Date_To) GO
--Restore log with LSN number RESTORE LOG InventoryDatabase FROM DISK = N' F:\Mybackups\InventoryDatabase_4589725r.trn' WITH STOPBEFOREMARK = 'lsn:112000000001700001', NORECOVERY;
--returns the names of the databases with more than 100 VLFs. SELECT [name], COUNT(l.database_id) AS 'vlf_count' FROM sys.databases s CROSS APPLY sys.dm_db_log_info(s.database_id) l GROUP BY [name] HAVING COUNT(l.database_id) > 100;