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

Откуда:
Сообщений: 122
открыт трэйс в котором выбраны эвенты "error log" и "user error message".
небходимо по ошибке определить запрос, которые её вызвал.

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

возможно ли сделать так, чтобы читать в одном трэйсе и ошибку, и запрос, её вызвавший?
(и при этом в нём не было запросов, которые не вызвают ошибки).

MS SQL 2012 SP2. спасибо.
18 сен 14, 12:20    [16589753]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4896
valv,

Включите все события в один трейс, при ошибке смотрите выше по номеру процесса. Если событий слишком много сохраните трассу в БД и там найдите предыдущий запросами. Делайте это аккуратно, чтобы не положить базу -- сначала в файл, потому открыть на другой машине и сохранить в БД.
18 сен 14, 12:56    [16590059]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
_djХомяГ
Guest
автор
открыт трэйс в котором выбраны эвенты "error log" и "user error message".
небходимо по ошибке определить запрос, которые её вызвал.

ну так выберите eventы SP/SQL:StmtStarted SP/SQL:StmtCompleted
осуществите поиск по EventClass Error
Выше должен идти оператор кот вызыал ошибку - также он будет Started но не Completed и
Или в чем вопрос то ?
18 сен 14, 13:07    [16590144]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
valv
Member

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

задача предотвратить поиск пары строк среди сотен тысяч.
нужен трэйс в котором только ошибки и запросы, их вызвавшие.
возможно ли такое?
18 сен 14, 13:10    [16590163]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
valv
Member

Откуда:
Сообщений: 122
_djХомяГ,

вопрос в том, чтобы не выводить в трэйс сотни тысяч ненужных запросов.
и не тратить время на поиск.
нужен трэйс в котором только ошибки и запросы, их вызвавшие.
18 сен 14, 13:12    [16590175]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
valv
открыт трэйс в котором выбраны эвенты "error log" и "user error message".
небходимо по ошибке определить запрос, которые её вызвал.

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

возможно ли сделать так, чтобы читать в одном трэйсе и ошибку, и запрос, её вызвавший?
(и при этом в нём не было запросов, которые не вызвают ошибки).
Можно добавить столбец Error, и установить фильтр
18 сен 14, 13:14    [16590189]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
_djХомяГ
Guest
valv
нужен трэйс в котором только ошибки и запросы, их вызвавшие.


В профайлере инфа выводится согласно установленным событиям и фильтрам
События "Оператор вызвавший ошибку" я не встречал )))
18 сен 14, 13:16    [16590202]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
valv
Member

Откуда:
Сообщений: 122
alexeyvg
Можно добавить столбец Error, и установить фильтр

не совсем понял. столбец Error заполнен только у эвентов из группы "errors and warnings", то есть запросы и процедуры отфильтруются тоже?
но всё равно большое спасибо, добавил стобец, стало легче искать.
эх, ещё бы убрать из трэйса ненужные строки...
18 сен 14, 13:34    [16590367]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4896
valv,


Во-первых, там есть поиск CTRL-F. Берете SPID и ищете этот номер в поле SPID наверх.

Во-вторых, если вам надо что-то долго искать и систематизировать -- выгрузите трассу в базу и весь арсенал SQL с его ORDER BY , GROUP BY к вашим услугам.
18 сен 14, 14:32    [16590774]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
valv
alexeyvg
Можно добавить столбец Error, и установить фильтр

не совсем понял. столбец Error заполнен только у эвентов из группы "errors and warnings", то есть запросы и процедуры отфильтруются тоже?
но всё равно большое спасибо, добавил стобец, стало легче искать.
эх, ещё бы убрать из трэйса ненужные строки...
Ну да, есть такое, там столбец при ошибке бывает заполнен, бывает не заполнен, зависит от ошибки. ИМХО это иначе как багом назвать нельзя :-(
Но возможно, вы ловите ошибку как раз из тех, что заполняют стролбец...
18 сен 14, 14:36    [16590801]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31960
valv
эх, ещё бы убрать из трэйса ненужные строки...
Самое правильное - ошибки и стейтменты писать в один трейс и запоминать в таблицу, тогда поиск ошибок + соответствующие им вызовы находятся одним простеньким запросом.
18 сен 14, 14:37    [16590806]     Ответить | Цитировать Сообщить модератору
 Re: profiler: как получить запрос, который вызвает ошибку?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
Trapping SQL Server Errors with Extended Events
18 сен 14, 15:13    [16591039]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить