Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
В принципе собственно сабж.
У меня есть база и несколько аппликаций, которые к неё обращаются (с разными логинами).
Как узнать кто пользуется процедурами, а кто напрямую лезет в таблицы?
Profiler не предлагать, потому что - есть аппликации, которые обращаются очень редко.

Может как-то по умному отфильтровать dm_exec_cached_plans чтобы по типу cahedobjecttype и базе можно было понять?
Но как тогда привязать к логину?

MS SQL 2005 SP4
10 окт 13, 11:31    [14949288]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
EvAlex
В принципе собственно сабж.
У меня есть база и несколько аппликаций, которые к неё обращаются (с разными логинами).
Как узнать кто пользуется процедурами, а кто напрямую лезет в таблицы?
Profiler не предлагать, потому что - есть аппликации, которые обращаются очень редко.

Может как-то по умному отфильтровать dm_exec_cached_plans чтобы по типу cahedobjecttype и базе можно было понять?
Но как тогда привязать к логину?

MS SQL 2005 SP4
dm_exec_cached_plan к логину не привязывается никак.

Без перехватывания всех запросов к базе я думаю тут не обойтись. Так что профайлер.
11 окт 13, 05:18    [14954304]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Ennor Tiegael
Member

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

...и все ходят под sa с пустым паролем, конечно же? Если нет, отними все прямые гранты на таблицы и жди, пока кто-нибудь не начнет орать.

По-другому - никак, ну если не считать утопического варианта декомпилировать все бинарники и докопаться до зашитых запросов.
11 окт 13, 07:19    [14954370]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
Ennor Tiegael
EvAlex,

...и все ходят под sa с пустым паролем, конечно же? Если нет, отними все прямые гранты на таблицы и жди, пока кто-нибудь не начнет орать.

По-другому - никак, ну если не считать утопического варианта декомпилировать все бинарники и докопаться до зашитых запросов.


ага, сейчас я в банке отнему гранты - слишком много крика.

Вот думал что-то тривиальное и мне только в голову не приходит...
12 окт 13, 23:26    [14961973]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
а ради чего все, кстати?
13 окт 13, 14:06    [14962782]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
EvAlex
Profiler не предлагать, потому что - есть аппликации, которые обращаются очень редко.

Проанализировать сорцы аппликух
13 окт 13, 21:02    [14963508]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
SFlash
Member

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

А зачем профилер? Запускаешь трассу на сервере с сохранением в файл, потом уже анализируешь спокойно.
Трасса на стороне сервера почти не оказывает влияния на скорость.
14 окт 13, 14:47    [14967263]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
SFlash
locky,

А зачем профилер? Запускаешь трассу на сервере с сохранением в файл, потом уже анализируешь спокойно.
Трасса на стороне сервера почти не оказывает влияния на скорость.


вопросы на засыпку:
1. Какого объема трасса будет сгенерированна при слежке за хорошо нагруженным приложением
2. Сколько времени и ресурсов займет анализ полученной трассы.

зы и причем тут я? я профилер не предлагал - я и без него чудесно умею всё делать :)
в том числе - решать задачи, поставленные автором
14 окт 13, 14:49    [14967286]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Winnipuh
Member [заблокирован]

Откуда: Київ
Сообщений: 10428
locky
EvAlex
Profiler не предлагать, потому что - есть аппликации, которые обращаются очень редко.

Проанализировать сорцы аппликух


+ если они есть
14 окт 13, 15:37    [14967708]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
locky
1. Какого объема трасса будет сгенерированна при слежке за хорошо нагруженным приложением
2. Сколько времени и ресурсов займет анализ полученной трассы.


1.не космического, если не писать лишнего + в пакованный фолдер сразу. нам-то надо собственно appName (+ userName?). возможно, даже текст запроса нафик не нужен будет. хотя - да - exec может быть сделан как rpc, а может и как batch. второе смешно, но имеет место быть аж бегом. тогда и текст надо будет писать, но как трактовать такое поведение - тот еще вопрос

2.загрузить в базу и сделать group by - ничего страшного

p.s.

на самом деле, задачи я так и не понял.. не в смысле что делать надо а зачем это делать надо

p.p.s.

возможно, помогут database audit и/или те же xevents - там на первый взгляд есть и батчи и rpc
14 окт 13, 15:47    [14967769]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Crimean
1.не космического, если не писать лишнего + в пакованный фолдер сразу. нам-то надо собственно appName (+ userName?). возможно, даже текст запроса нафик не нужен будет. хотя - да - exec может быть сделан как rpc, а может и как batch. второе смешно, но имеет место быть аж бегом. тогда и текст надо будет писать, но как трактовать такое поведение - тот еще вопрос

ну, зависит от
Формально практически каждое приложение спавнит batch complete, но нам нужны далеко не все из них
какие именно - можно выяснить только анализом исходного текста, а значит его нужно писать
В интересном случае, когда таки юзают процедуры, но вызывают из батча - текст нужно анализировать
prepared statements, sp_executesql, sp_prepexec/sp_execute и т.д. - это таки да, rpc complete, его тоже нужно ловить и смотреть на текст

по итогу, мы ловим все базовые эвенты batch/rpc complete, что на нагруженной системе таки даёт приличное количество данных

и потом их просто так груп баем не сведёшь, нужно брать что-то вроде RML/ClearTrace
14 окт 13, 15:55    [14967836]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Crimean
Member

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

да делал это я, не так оно и страшно. грузишь в базу трас, дальше все, что batch - начинаешь через LIKE фактически "разносить". типа словарный анализ, что ли.. да, первые полчаса муторно, но дальше - проще. с учетом того, что задача "разовая" день на нее потратить можно, результат будет более чем достоверный
а если не разовая для той же системы - сохраняешь словарик и привет, дальше тупо контролируешь % разобранности для batch
и если низковат - актуализируешь словарики
как-то так..
p.s.
да, трасы такие гигами меряются, ну и что?
14 окт 13, 16:00    [14967869]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
Crimean
а ради чего все, кстати?


хотят поменять структуру базы.
Те кто использовал процедуры - им их подправят.
А вот для тех кто лезет напрямую, сделают views, чтобы ничего не падало.
Но на 100% не получится подстоиться - хотят узнать, кто упадёт, обратиться заранее чтобы подготовились.
16 окт 13, 12:27    [14979188]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
EvAlex
Crimean
а ради чего все, кстати?
Но на 100% не получится подстоиться - хотят узнать, кто упадёт, обратиться заранее чтобы подготовились.
А тестирование у вас не практикуется?

А скажите название банка, чтобя я случайно туда свои деньги не отнес :)
16 окт 13, 21:56    [14982775]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
locky
Member

Откуда: Харьков, Украина
Сообщений: 62034
Mind
EvAlex
пропущено...
Но на 100% не получится подстоиться - хотят узнать, кто упадёт, обратиться заранее чтобы подготовились.
А тестирование у вас не практикуется?

А скажите название банка, чтобя я случайно туда свои деньги не отнес :)


Тестирование - само собой
Однако перед тестированием приложение необходимо доработать, а не надеяться на то, что тестеры проверят весь воркфлоу
16 окт 13, 21:58    [14982778]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
по-моему тут надо включать аудит и ловить все вставки. ибо остальное будет работать. причем все равно - вставка из хранимки или из батча. если не ошибаюсь, когда такое делали представление оборачивали инстедными триггерами и в результате для вставок надо было дописывать полей. а остальное все прозрачно и так
16 окт 13, 22:27    [14982848]     Ответить | Цитировать Сообщить модератору
 Re: Как узнать, кто из пользователей использует Stored Procedures, а кто ad hoc statements?  [new]
EvAlex
Member

Откуда: Israel
Сообщений: 1001
Mind
EvAlex
пропущено...
Но на 100% не получится подстоиться - хотят узнать, кто упадёт, обратиться заранее чтобы подготовились.
А тестирование у вас не практикуется?

А скажите название банка, чтобя я случайно туда свои деньги не отнес :)


тестирование само собой.
Верить в непогрешимость QA-щиков , что они пропустят ничего, немного наивно.
22 окт 13, 10:56    [15012676]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить