Viewing previous query results from SQL Server Management Studio

The only way to do this is by having set up some form of monitoring process prior to (and during) the operation. E.g. the Profiler tool allows you to log the duration of (and any statements, but not results) of any batch, or you could issue a SELECT or PRINT showing the results of getdate() prior to, and after, the statement.

With modification operations like a DELETE, there will be a record in the transaction log (assuming it hasn't been truncated since, with a log backup or a checkpoint in simple recovery mode), but mere mortals can't inspect the transaction log with built-in tools. Third-party log inspectors are available though, but the transaction log shows the time an operation occurred, it doesn't contain information about its duration :)

I realise that this is shutting the gate after the horse is bolted, but there's no built-in record of things like this that will survive a reboot, sorry!


Maybe mere mortals can't view the log files, but a DBA can glean all kinds of information. Here are a couple queries to get you started.

-- Run this query to get the transaction ID
USE YourDatabase
GO
SELECT 
    [Transaction ID],
    Operation,
    Context,
    AllocUnitName    
FROM 
    fn_dblog(NULL, NULL) 
WHERE 
    Operation = 'LOP_DELETE_ROWS'
    and AllocUnitName like '%YourTableName%'
ORDER by [transaction ID] desc

-- Run this query to find the transaction SID
SELECT
    Operation,
    [Transaction ID],
    [Begin Time],
    [End Time],
    [Transaction Name],
    [Transaction SID]
FROM
    fn_dblog(NULL, NULL)
WHERE
    [Transaction ID] = 'TransactionID from above'

-- or use below to search using time instead of transaction ID

    [Begin Time] between 'starttime' and 'endtime'
AND
    [Operation] = 'LOP_BEGIN_XACT'

-- Run this to determine who ran the delete
USE MASTER
GO   
SELECT SUSER_SNAME([Transaction SID from above])