2015-01-20 2 views
0

Операция удаления была случайно запущена, но в течение нескольких секунд отменена программистом в студии управления сервером sql. Можно ли узнать, какие записи были удалены и восстановить их? Это для сервера sql 2008.Отмененный оператор удаления SQL Server в середине запуска на сервере

+1

Если он был отменен успешно, никакие строки не должны быть удалены. Если он был завершен до его отмены, все строки, которые соответствуют предложениям where/join (предполагается, что они есть, иначе все строки в таблице) должны быть удалены. Оператор SQL - это неявная транзакция, поэтому она либо полностью, либо ничего - нет возможного способа удалить половину строк. –

+0

Мне удалось подтвердить, что вы сказали, поместив большую таблицу в мою локальную базу данных, а затем попробуйте удалить ее, а затем отмените ее до ее завершения. Я проверил, и я получил тот же счетчик записей после отмены удаления, которое не закончилось, как я сделал, прежде чем я запустил инструкцию delete. Это хорошо знать. – user1408767

ответ

1

Обратитесь к вашему dba, чтобы восстановить данные. Вы можете увидеть последние выполненные запросы, но вам потребуется повышенный доступ запустить это заявление:

SELECT O.Name, o.type_desc, ps.last_execution_time 
FROM sys.dm_exec_query_stats AS PS 
CROSS APPLY sys.dm_exec_sql_text(PS.sql_handle) t 
INNER JOIN sys.sql_modules as M 
ON M.object_id = t.objectid 
INNER JOIN sys.objects as O 
ON M.object_id = o.object_id 
order by ps.last_execution_time desc; 

Вы также можете попробовать искать его в кэше с помощью этого: sys.dm_exec_cached_plans

+0

Этот запрос не имеет ничего общего с данными, он просто идентифицирует кучу последних запросов, которые были запущены в системе. Похоже, что OP уже точно знает, что было сделано. –

Смежные вопросы