Вчера вечером я оставил свой компьютер, выполнив пакетное удаление в редакторе запросов Sql Server Management Studio. Я запускал это, чтобы проверить скорость удаления в большой базе данных, прежде чем мы использовали скрипт в нашей действующей базе данных. Ночью мой компьютер перезагрузился для обновления. Мне интересно, есть ли способ просмотреть журнал предыдущих выполненных операторов и узнать время, которое потребовалось для выполнения. Он удалялся из SQL Server 2000. Спасибо!
Может быть, простые смертные не могут просматривать файлы журналов, но администратор баз данных может собрать все виды информации. Вот пара вопросов, с которых можно начать.
-- 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])
Единственный способ сделать это - настроить некоторую форму процесса мониторинга до (и во время) операции. Например. инструмент Profiler позволяет вам регистрировать продолжительность (и любые утверждения, но не результаты) любого пакета, или вы можете выдать SELECT
или PRINT
показывая результаты getdate()
до и после заявления.
С операциями модификации, такими как DELETE
, в журнале транзакций будет запись (при условии, что с тех пор она не была усечена, с резервной копией журнала или контрольной точкой в простом режиме восстановления), но простые смертные не могут проверить журнал транзакций с помощью встроенных инструментов. Хотя доступны сторонние инспекторы журналов, но журнал транзакций показывает время, когда произошла операция, но не содержит информации о ее продолжительности :)
Я понимаю, что это закрывает ворота после того, как лошадь заперта, но нет встроенной записи таких вещей, которые переживут перезагрузку, извините!