powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Статистика выполнения хп через event session
13 сообщений из 13, страница 1 из 1
Статистика выполнения хп через event session
    #39647969
RIBor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую уважаемое сообщество!
Появилась задача отследить использование хп.
Есть сервер:
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6220.0 (X64)
Mar 19 2015 12:32:14
Copyright (c) Microsoft Corporation
Standard Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)

Создал event session
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
create event session statsp on server 
add event sqlserver.sp_statement_completed (
	action (
		sqlserver.client_app_name, 
		sqlserver.client_hostname,
		sqlserver.database_id,
		sqlserver.session_id,
		sqlserver.username)
	where 
		object_type = 8272 
		and source_database_id = 11
		and sqlserver.is_system = 0
) 
add target package0.asynchronous_file_target (
  set filename = N'j:\DBA_Audit\statsp.xel',
  metadatafile = N'j:\DBA_Audit\statsp.xem'
  );


Запустил. Параллельно работал профайлер.
За пару минут конечный файл вырос до 40Мб. Это мне показалось неправильным. Остановил, загрузил данные в таблицу.
Оказалось, что для каждой процедуры в файл пишется огромное количество "строк", например, для одной записалось более 27000 "строк".
Отсюда и вопрос: это в порядке вещей или я где-то накосячил?
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647977
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RIBorsp_statement_completedЭто отслеживание выполнения инструкций в ХП, а не вызова ХП.
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647986
RIBor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
invmRIBorsp_statement_completedЭто отслеживание выполнения инструкций в ХП, а не вызова ХП.

Правильно будет использовать "rpc_completed"?
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647988
aleksrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647991
RIBor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
aleksrov,
Спасибо!
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647993
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
CREATE EVENT SESSION [EXEC_SP] ON SERVER 
ADD EVENT sqlserver.sp_statement_completed(SET collect_object_name=(1), 
     collect_statement=(0)
    ACTION(sqlserver.client_app_name, 
     sqlserver.client_hostname,
     sqlserver.database_id,
     sqlserver.database_name,
     sqlserver.username)
    WHERE (([object_type]=(8272)) 
     AND ([source_database_id]=(ВАША БД)))) 

GO
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647997
RIBor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,

в 2008 нет такого

Код: sql
1.
collect_object_name=(1), collect_statement=(0)
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39647998
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39648004
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RIBorTaPaK,

в 2008 нет такого

Код: sql
1.
collect_object_name=(1), collect_statement=(0)


ну уберите :)
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39648137
RIBor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TaPaK,
тогда возвращаемся к исходной точке - тысячи записей для одной хп.

Переписал команду под "module_end"
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
create event session statsp on server 
add event sqlserver.module_end  (
	action (
		sqlserver.client_app_name, 
		sqlserver.client_hostname,
		sqlserver.session_id,
		sqlserver.username)
	where 
		--object_type = 'FN'
		--[object_name] = 'procСвоиПартнеры'and 
		source_database_id = 11
		and sqlserver.is_system = 0
) 
add target package0.asynchronous_file_target (
  set filename = N'j:\DBA_Audit\statsp.xel',
  metadatafile = N'j:\DBA_Audit\statsp.xem'  )


Как оказалось "object_type" для события "module_end" имеет тип "ansi_string".
Для начала проверил, что в этом поле вообще приходит: "P " - для хп, "FN" - для функций (похоже, что аналог type из sys.objects.
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
<event name="module_end" package="sqlserver" id="117" version="1" timestamp="2018-05-22T09:41:11.926Z">
  <data name="source_database_id">
    <value>11</value>
    <text />
  </data>
  <data name="object_id">
    <value>974626515</value>
    <text />
  </data>
  <data name="duration">
    <value>4877</value>
    <text />
  </data>
  <data name="row_count">
    <value>24</value>
    <text />
  </data>
  <data name="object_type">
    <value>P </value>
    <text />
  </data>
  <data name="object_name">
    <value>procСвоиПартнеры</value>
    <text />
  </data>
  <action name="client_app_name" package="sqlserver">
    <value>Microsoft Office 2010</value>
    <text />
  </action>
  <action name="client_hostname" package="sqlserver">
    <value>RebusUser</value>
    <text />
  </action>
  <action name="database_id" package="sqlserver">
    <value>11</value>
    <text />
  </action>
  <action name="session_id" package="sqlserver">
    <value>97</value>
    <text />
  </action>
  <action name="username" package="sqlserver">
    <value>DOMEN\user</value>
    <text />
  </action>
</event>


Но почему-то, если в команде поставить соответствующее условие, например,
Код: sql
1.
object_type = 'FN'

,
то вообще ничего не возвращается. При этом условие по имени
Код: sql
1.
[object_name] = 'procСвоиПартнеры'

работает.
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39648147
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RIBor,

Код: sql
1.
[sqlserver].[equal_i_sql_ansi_string]([object_type],'FN')
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39648269
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RIBor,
а как насчет sys.dm_exec_procedure_stats?
...
Рейтинг: 0 / 0
Статистика выполнения хп через event session
    #39649062
Фотография Mind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Владислав КолосовRIBor,
а как насчет sys.dm_exec_procedure_stats?А оно что показывает с какими параметрами процедура вызывалась? Или хотя бы кто и когда?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Статистика выполнения хп через event session
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]