Автор: Грант Фритчи.
Оригинал статьи: Oh ****!
Вы когда-нибудь случайно закрывали SQL Server Management Studio (SSMS)? Вам задавали вопрос “Сохранить изменения следующих элементов?” при закрытии SSMS? И вы совершенно бездумно нажимали кнопку "Нет", хотя был открыт запрос, над которым вы работали? Ну что вы, я ни разу так не делал. Так поступает только идиот….
Ладно, признаюсь. Я только что так сделал. Глупо, но я потратил не менее получаса на запрос и теперь он потерян…. или не потерян? Я выполнил запрос и смотрел на результаты, когда закрыл SSMS. В начале меня охватила паника и я начал думать, как восстановить данные (я слышал, где-то есть какой-то файл). Затем мне в голову пришла мысль, я только что писал запросы к кэшу с использованием DMO. Почему бы не "вытянуть" текст своего запроса с помощью DMO? Сработало подобно заклинанию.
Оригинал статьи: Oh ****!
Вы когда-нибудь случайно закрывали SQL Server Management Studio (SSMS)? Вам задавали вопрос “Сохранить изменения следующих элементов?” при закрытии SSMS? И вы совершенно бездумно нажимали кнопку "Нет", хотя был открыт запрос, над которым вы работали? Ну что вы, я ни разу так не делал. Так поступает только идиот….
Ладно, признаюсь. Я только что так сделал. Глупо, но я потратил не менее получаса на запрос и теперь он потерян…. или не потерян? Я выполнил запрос и смотрел на результаты, когда закрыл SSMS. В начале меня охватила паника и я начал думать, как восстановить данные (я слышал, где-то есть какой-то файл). Затем мне в голову пришла мысль, я только что писал запросы к кэшу с использованием DMO. Почему бы не "вытянуть" текст своего запроса с помощью DMO? Сработало подобно заклинанию.
SELECT dest.text
FROM sys.dm_exec_query_stats AS deqs
CROSS APPLY sys.dm_exec_sql_text(deqs.sql_handle) AS dest
WHERE deqs.last_execution_time > '5/19/2011 11:00'
AND dest.text LIKE 'WITH%';
Мой запрос был гораздо сложнее, но это было все, что требовалось. Я отфильтровал мусор из кэша, выбрав только те запросы, которые выполнялись в пределах тех 15 минут, когда был закрыт SSMS, и подставил начало запроса, обобщенное табличное выражение (CTE). Этого было достаточно. Я восстановил свой запрос. Все было в порядке: потребовалось немного отформатировать запрос, но использовать его можно было прямо сейчас.
Пишу об этом на случай, если вы окажетесь в подобной ситуации. Вы тоже можете восстановить текст запроса, легко и быстро. Хотя, может, только я способен на такую глупость.
Спасибо, пригодилось, восстановил запрос 8ми дневной давности, вызванный крешем ССМСтудии. думал скрипт уже не нужен будет :) оказался нужен :)
ОтветитьУдалить