Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Статистика выполнения хп через event session / 13 сообщений из 13, страница 1 из 1
22.05.2018, 11:35
    #39647969
RIBor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
Приветствую уважаемое сообщество!
Появилась задача отследить использование хп.
Есть сервер:
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
22.05.2018, 11:42
    #39647977
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
RIBorsp_statement_completedЭто отслеживание выполнения инструкций в ХП, а не вызова ХП.
...
Рейтинг: 0 / 0
22.05.2018, 11:48
    #39647986
RIBor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
invmRIBorsp_statement_completedЭто отслеживание выполнения инструкций в ХП, а не вызова ХП.

Правильно будет использовать "rpc_completed"?
...
Рейтинг: 0 / 0
22.05.2018, 11:54
    #39647988
aleksrov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
...
Рейтинг: 0 / 0
22.05.2018, 11:57
    #39647991
RIBor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
aleksrov,
Спасибо!
...
Рейтинг: 0 / 0
22.05.2018, 11:58
    #39647993
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
Код: 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
22.05.2018, 12:00
    #39647997
RIBor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
TaPaK,

в 2008 нет такого

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

в 2008 нет такого

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


ну уберите :)
...
Рейтинг: 0 / 0
22.05.2018, 14:22
    #39648137
RIBor
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
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
22.05.2018, 14:43
    #39648147
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Статистика выполнения хп через event session
RIBor,

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


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