powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не выдает некоторые планы запросов в Sql Server 2012
11 сообщений из 11, страница 1 из 1
не выдает некоторые планы запросов в Sql Server 2012
    #38840378
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Microsoft SQL Server 2012 - 11.0.5556.0 (X64)
Oct 31 2014 16:50:24
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840387
aleks2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Партизан?!
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840391
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Коллеги, кто-нибудь сталкивался с тем, что в Sql Serverr 2012 функции sys.dm_exec_text_query_plan и sys.dm_exec_query_plan не выдают многие планы запросов?
В Sql 2008 R2 с таким не сталкивался.

Вот например:

Код: sql
1.
2.
3.
4.
5.
6.
7.
select cast (query_plan as xml) as All_Plan, r.plan_handle, * 
	from sys.dm_exec_requests r
	outer apply sys.dm_exec_sql_text(r.sql_handle) as s
	outer apply sys.dm_exec_text_query_plan (r.plan_handle,0,-1) p
	 where 1=1  
		--and r.sql_handle is not null 
		and session_id = 416



Пробовал отдельно запускать sys.dm_exec_text_query_plan и sys.dm_exec_query_plan для данного plan_handle, не выдает, хотя текущий Sql-запрос можно получить.

Такая версия Sql:
Microsoft SQL Server 2012 - 11.0.5556.0 (X64)
Oct 31 2014 16:50:24
Copyright (c) Microsoft Corporation
Enterprise Edition: Core-based Licensing (64-bit) on Windows NT 6.2 <X64> (Build 9200: )
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840406
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonarchyКоллеги, кто-нибудь сталкивался с тем, что в Sql Serverr 2012 функции sys.dm_exec_text_query_plan и sys.dm_exec_query_plan не выдают многие планы запросов?
Начните с хелпа
http://msdn.microsoft.com/en-us/library/bb326654.aspx

Under the following conditions, no Showplan output is returned in the plan column of the returned table for sys.dm_exec_text_query_plan:...
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840410
Crimean
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зачастую, профайлер - наше все...
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840697
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
GloryMonarchyКоллеги, кто-нибудь сталкивался с тем, что в Sql Serverr 2012 функции sys.dm_exec_text_query_plan и sys.dm_exec_query_plan не выдают многие планы запросов?
Начните с хелпа
http://msdn.microsoft.com/en-us/library/bb326654.aspx

Under the following conditions, no Showplan output is returned in the plan column of the returned table for sys.dm_exec_text_query_plan:...


Спасибо! Может у кого есть готовые наработки (или статьи) - запросы Sql, по которым можно посмотреть эти планы и в таких случаях?
Даже распространеннная sp_WhoIsActive не выдает многие планы в Sql 2012, это очень не удобно, когда тормозит запрос, а ты не можешь взглянуть на его план.
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38840724
Фотография a_voronin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MonarchyСпасибо! Может у кого есть готовые наработки (или статьи) - запросы Sql, по которым можно посмотреть эти планы и в таких случаях?
Даже распространеннная sp_WhoIsActive не выдает многие планы в Sql 2012, это очень не удобно, когда тормозит запрос, а ты не можешь взглянуть на его план.

Держите профайлер включенным ... Пока сервак не упадёт.
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38841508
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
a_voroninMonarchyСпасибо! Может у кого есть готовые наработки (или статьи) - запросы Sql, по которым можно посмотреть эти планы и в таких случаях?
Даже распространеннная sp_WhoIsActive не выдает многие планы в Sql 2012, это очень не удобно, когда тормозит запрос, а ты не можешь взглянуть на его план.

Держите профайлер включенным ... Пока сервак не упадёт.

Чтоб сервак не падал от нагрузки от включенных профайлеров, нам и не дают на профайлер права на PRODе:)
Так что, думаю, это не вариант...

Мне кажется, должны быть хитрые Sql-запросы, которые все выдают, план то есть где-то на сервере.

Вот подобный запрос уже мне сильно помог:

Код: sql
1.
2.
3.
4.
5.
6.
SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan, *
FROM sys.dm_exec_cached_plans 
CROSS APPLY sys.dm_exec_sql_text(plan_handle)
CROSS APPLY sys.dm_exec_query_plan(plan_handle)
--where text like '%LOAD_INCR_BS%'  -- имя процедуры 
where text like '%select ID_SCENARIO,ID_DATE%' -- или часть запроса



Так я нашел и кэши планов запросов, которые вызываются из основной процедуры через Exec() по части кода, что очень удобно для анализа торможений, тем более что эти кэши можно периодически куда-то сохранять в логи для возможностей дальнейшего анализа.

Возможно, можно смотреть как-то удобнее... Если кто знает, пишите:)
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38841519
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Monarchy,
если план не кэширован, то его не увидите никак, кроме как профайлером.
...
Рейтинг: 0 / 0
не выдает некоторые планы запросов в Sql Server 2012
    #38843387
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Владислав КолосовMonarchy,
если план не кэширован, то его не увидите никак, кроме как профайлером.

Вроде так пока получается находить планы текущих запросов, которые в данный момент еще запущены, не из кэша:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
	select cast (query_plan as xml) as All_Plan, text, r.plan_handle, * 
	from sys.dm_exec_requests r
	outer apply sys.dm_exec_sql_text(r.sql_handle) as s
	outer apply sys.dm_exec_text_query_plan (r.plan_handle,0,-1) p
	 where 1=1  
		--and r.sql_handle is not null 
		--and session_id = 114 -- поиск по id запроса
		and text like '%INSERT INTO SLICE_BS_1 WITH(TABLOCK)%' -- поиск по тексту запроса



Все проблемные запросы, которые уже закончились, но при прошлом запуске тормозили (возможно, были убиты), я обычно нахожу в кэше по запросу в своем прошлом посте:

Код: sql
1.
2.
3.
4.
5.
6.
	-- Поискать план в кэшах
	SELECT UseCounts, Cacheobjtype, Objtype, TEXT, query_plan, *
	FROM sys.dm_exec_cached_plans 
	CROSS APPLY sys.dm_exec_sql_text(plan_handle)
	CROSS APPLY sys.dm_exec_query_plan(plan_handle)
	where text like '%INSERT INTO SLICE_BS_1 WITH(TABLOCK)%' -- поиск по тексту запроса
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
не выдает некоторые планы запросов в Sql Server 2012
    #39883229
Monarchy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот тот искомый хитрый Sql-запрос, который выдает все планы (ни разу не было проблем с их отображением):

Код: sql
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.
--- посмотреть план запроса 
DECLARE @id_session INT =338 -- написать номер сессии 

SELECT s.session_id, 
       d.NAME                                      AS DName, 
       Cast(Dateadd(second, s.total_elapsed_time / 1000, Getdate()) - Getdate() 
            AS TIME 
       )                                           AS elapsed_time, 
       ses.original_login_name, 
       s.granted_query_memory * 8. / 1024. / 1024. granted_query_memory_GB, 
       s.cpu_time, 
       s.logical_reads, 
       s.reads, 
       s.writes, 
       s.wait_type, 
       s.wait_time, 
       s.last_wait_type, 
       Substring(st.text, s.statement_start_offset / 2 + 1, 
       ( CASE 
           WHEN s.statement_end_offset = -1 THEN Len( 
           CONVERT(NVARCHAR(max), st.text)) * 
                                                 2 
           ELSE s.statement_end_offset 
         END - s.statement_start_offset ) / 2 + 1) AS sql_text, 
       percent_complete, 
       Try_convert(xml, pl.query_plan), 
       sp.*, 
       s.*, 
       st.*, 
       ses.* 
FROM   sys.dm_exec_requests s 
       INNER JOIN sys.databases d 
               ON d.database_id = s.database_id 
       INNER JOIN sys.dm_exec_sessions ses 
               ON s.session_id = ses.session_id 
       CROSS apply sys.Dm_exec_sql_text(s.sql_handle) st 
       OUTER apply sys.Dm_exec_query_plan(s.plan_handle) sp 
       OUTER apply sys.Dm_exec_text_query_plan(s.plan_handle, 
                   s.statement_start_offset, 
       s.statement_end_offset) pl 
WHERE  s.session_id = @id_session 
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не выдает некоторые планы запросов в Sql Server 2012
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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