Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Conejo
Member

Откуда:
Сообщений: 123
Как можно получить текст недавно выполнявшегося нересурсоемкого запроса, который не светится в мониторе активности (но наверно так же кэшируется как и все остальные). Известно, что он выглядел так: ALTER PROCEDURE <название> и завершился с ошибкой.

Это возможно?
25 сен 15, 18:47    [18196741]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
o-o
Guest
Так если это было ALTER PROCEDURE, то выполняться было нЕчему.
Этой командой вы пытаетесь *сохранить* в базе новый текст процедуры, если текст отпарсится.
А если была ошибка парсинга, то ничего не происходит, текст процедуры остается тот, что был
25 сен 15, 19:27    [18196916]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Conejo
Member

Откуда:
Сообщений: 123
О-о, спасибо за сочувствие)). Конечно, если бы процедура изменилась, я бы тут не писала. Процедура не была изменена, но запрос на изменение БЫЛ запущен на выполнение. И наверно это где-то записано в логах или системных таблицах, и в идеале его можно достать. И чем позже, тем наверно меньше шансов.
25 сен 15, 19:40    [18196967]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
o-o
Guest
Conejo
запрос на изменение БЫЛ запущен на выполнение. И наверно это где-то записано в логах или системных таблицах, и в идеале его можно достать. И чем позже, тем наверно меньше шансов.

девушка, я не знаю, как вас убедить.
синтаксически неверный код выполняться не может в принципе.
если вас на языке племени мумба-юмба просят что-то сделать,
а вы не понимаете, о чем речь, вы не можете это осуществить.
когда вы пишете неверную конструкцию, это имеет ровно тот же эффект,
что просто написать цнфлкднвлфднвлфднвлйдфс и отправить на выполнение.
и вот зачем серверу хранить то, что для него полная галиматья?

в дефолтном трэйсе отражаются ALTER PROCEDURE,
но просто события, никакого полного текста.
и если кто-то что-то злостно изменил, а вы подсуетились и по горячим следам залезли в трэйс,
вы найдете нехороший логин.
но в вашей ситуации не произошло никакого ALTER PROCEDURE.
25 сен 15, 20:51    [18197214]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Conejo
Member

Откуда:
Сообщений: 123
поняла. Спасибо.
26 сен 15, 02:09    [18198433]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
Conejo,

напишите DDL триггер, с его помощью можете вести журнал - кто и когда менял какие объекты.
Для защиты от изменения или потери объектов рекомендовано использовать любую из доступных систем версионирования.
28 сен 15, 11:05    [18203172]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
o-o
Guest
Владислав Колосов,

это ппц.
не может триггер сработать на событие, к-ого не было.
при синтаксических ошибках никакое ALTER PROC не отрабатывает.
возьмите е попробуйте, при включенном DDL-триггере
28 сен 15, 11:45    [18203447]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Кот Матроскин
Member

Откуда: Москва
Сообщений: 8933
Если включить профайлер с соответствующими событиями - он отловит попытку ALTER PROCEDURE. Но это, конечно, надо делать заранее.
28 сен 15, 12:15    [18203615]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Conejo
поняла. Спасибо.


зы. а нафига вам был нужен тот неправильный запрос?
28 сен 15, 12:17    [18203628]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
SIMPLicity_
Member

Откуда: (((@)))
Сообщений: 8727
Conejo,
Если Вы в MSSQL Studioo выполняли пакет, состоящий из нескольких запросов, типа:

Use foliobase;
Go
Select top 10 * from scl_artc;
Go
Alter procedure MyProc as
Set nocount on;
Go
Select topppp 20 from blablabla;
Go


И ошибка возникла на последнем шаге, то таки да - процедура обнулилась и вообще.
Уточните суть Вашей проблемы.
28 сен 15, 13:16    [18203954]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
o-o
Guest
SIMPLicity_
Conejo,
Если Вы в MSSQL Studioo выполняли пакет, состоящий из нескольких запросов, типа:

Use foliobase;
Go
Select top 10 * from scl_artc;
Go
Alter procedure MyProc as
Set nocount on;
Go
Select topppp 20 from blablabla;
Go


И ошибка возникла на последнем шаге, то таки да - процедура обнулилась и вообще.
Уточните суть Вашей проблемы.

и где же тут завершение с ошибкой?
и сколько, простите, шагов процедуре?
Set nocount on что ли с ошибкой завершился?
28 сен 15, 13:22    [18203986]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Владислав Колосов
Member

Откуда:
Сообщений: 7868
o-o,

я-то писал не о том, как отловить плохую команду, выполненную непонятно как и кем. Пусть хоть сто плохих скриптов - какая разница, если от их выполнения нулевой эффект.
28 сен 15, 14:07    [18204292]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
o-o
Guest
перевожу, о чем пишет ТС :)

меняла текст процедуры, наверняка была какая-то ценная мысль, оставалось только воплотить.
с первого раза не получилось сохранить прецедуру на сервере,
т.к. где-то вкралась ошибка, может, получился SSELECT (c заиканием).
и тут ТС отвлекают.
она *не сохранила проделанную работу*.
возвращается к монитору, а там синий экран или что-то такое.
Conejo
Конечно, если бы процедура изменилась, я бы тут не писала. Процедура не была изменена

жалко потерянное, вот и интересуется, нельзя ли текст вернуть.

тут совет такой: надо все, что ценно, созранять в файле на диске, т.е. жать SAVE AS.
потому что вряд ли для таких целей стОит использовать профайлер.
и DDL-триггер бы тоже не помог, если бы даже и был
28 сен 15, 14:29    [18204426]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Conejo
Member

Откуда:
Сообщений: 123
Да, всё так. Процедура уже написана заново, вопрос не актуален... Нужно быть аккуратнее...
29 сен 15, 10:57    [18208368]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31438
o-o
тут совет такой: надо все, что ценно, созранять в файле на диске, т.е. жать SAVE AS.
+1
Если потрачено больше 5 минут, лучше уже сохранить :-)
29 сен 15, 11:17    [18208467]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Conejo
Да, всё так. Процедура уже написана заново, вопрос не актуален... Нужно быть аккуратнее...


Позволю себе угадать: эта версия даже лучше той, которая накрылась
29 сен 15, 11:24    [18208514]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Conejo
Member

Откуда:
Сообщений: 123
Winnipuh, ну эта по крайней мере откомпилировалась))
29 сен 15, 12:32    [18208944]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
Conejo
Winnipuh, ну эта по крайней мере откомпилировалась))


кстати, во время написания процедур можно делать фотки экрана смартфоном, типа бэкап
29 сен 15, 12:35    [18208964]     Ответить | Цитировать Сообщить модератору
 Re: Получить текст недавно выполнявшегося запроса (известны ключевые слова)  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Был какой то add-on к SSMS, который сохраняет текст выполняемых запросов где-то локально на диске, чтобы потом можно было их найти.
1 окт 15, 21:17    [18223301]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить