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

Откуда: Белокаменная
Сообщений: 260
есть sql server 2014
возможно ли перехватывать планы запросов с помощью extended events?

в системе дедлоки
мне хотелось бы знать какой конкретно план использовался при возникновении дедлока
10 июн 16, 14:10    [19280647]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
fduch f.f.
возможно ли перехватывать планы запросов с помощью extended events?
Возможно
10 июн 16, 15:07    [19280989]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
a_voronin
Member

Откуда: Москва
Сообщений: 4902
Запустить SQL Profiler

Смотреть
Showplan XML
Deadlock graph
10 июн 16, 15:11    [19281021]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
fduch f.f.
Member

Откуда: Белокаменная
Сообщений: 260
Спасибо!
10 июн 16, 16:34    [19281583]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
Maxim Dornostup
Member

Откуда: г.Калининград
Сообщений: 21
http://sqlcom.ru/dba-tools/who-is-active/

Adam Machanic неплохо постарался для нас. Полагаю что этот вариант наиболее идеален будет.
15 июн 16, 10:22    [19294569]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
Alexander Us
Member

Откуда:
Сообщений: 1161
fduch f.f.,

список сейчас выполняющихся запросов

	SELECT 	
	 req.command command_type
	,(select top 1 net_transport from sys.dm_exec_connections con with(nolock) where req.session_id=con.session_id) net_transport
	,(select top 1 protocol_type from sys.dm_exec_connections con with(nolock) where req.session_id=con.session_id) protocol_type
	 
	,sqltext.TEXT command_text
	
	--, SUBSTRING(sqltext.text, (req.statement_start_offset/2)+1, 
 --       ((CASE req.statement_end_offset
 --         WHEN -1 THEN DATALENGTH(sqltext.text)
 --        ELSE req.statement_end_offset
 --        END - req.statement_start_offset)/2) + 1) AS statement_text
	,db_name(req.database_id) db_name
	,req.session_id as s_id
	,req.blocking_session_id as bls_id
	,req.status as req_status
	,req.cpu_time req_cpu_time_ms
	,ses.cpu_time ses_cpu_time_ms
	,datediff(ms,req.start_time,getdate()) / 1000.0 elapsed_sec
	--,req.total_elapsed_time / 1000.0 req_elapsed_sec
	,ses.original_login_name
	,ses.host_name
	,ses.program_name
	,ses.host_process_id
	,ses.client_interface_name
	,ses.memory_usage
	--,ses.last_request_start_time
	--,ses.last_request_end_time
	,ses.reads
	,ses.writes
	,ses.logical_reads
	,ses.row_count
	,req.percent_complete
	--,req.[sql_handle]
	,p.query_plan
	FROM 
		        sys.dm_exec_requests req with(nolock)	
	INNER JOIN  sys.dm_exec_sessions ses with(nolock) on req.session_id=ses.session_id
	CROSS APPLY sys.dm_exec_sql_text(sql_handle) AS sqltext 
	OUTER APPLY	sys.dm_exec_query_plan(req.plan_handle) AS p 	
	where 1=1
    --and req.database_id > 4
	and req.session_id <> @@SPID
	order by 
	--req.total_elapsed_time desc
	--req.cpu_time desc
	elapsed_sec desc


ЗЫ:
хотя от Adam Machanic навеное лучше
15 июн 16, 15:02    [19295912]     Ответить | Цитировать Сообщить модератору
 Re: как перехватить план запроса?  [new]
Crimean
Member

Откуда:
Сообщений: 13147
Maxim Dornostup
http://sqlcom.ru/dba-tools/who-is-active/

Adam Machanic неплохо постарался для нас. Полагаю что этот вариант наиболее идеален будет.


FYI: не все планы ловятся так
15 июн 16, 17:35    [19296782]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить