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])