Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не выдает некоторые планы запросов в Sql Server 2012 / 11 сообщений из 11, страница 1 из 1
23.12.2014, 11:37
    #38840378
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
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
23.12.2014, 11:40
    #38840387
aleks2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
Партизан?!
...
Рейтинг: 0 / 0
23.12.2014, 11:41
    #38840391
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
Коллеги, кто-нибудь сталкивался с тем, что в 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
23.12.2014, 11:50
    #38840406
Glory
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
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
23.12.2014, 11:55
    #38840410
Crimean
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
зачастую, профайлер - наше все...
...
Рейтинг: 0 / 0
23.12.2014, 15:16
    #38840697
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
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
23.12.2014, 15:31
    #38840724
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
MonarchyСпасибо! Может у кого есть готовые наработки (или статьи) - запросы Sql, по которым можно посмотреть эти планы и в таких случаях?
Даже распространеннная sp_WhoIsActive не выдает многие планы в Sql 2012, это очень не удобно, когда тормозит запрос, а ты не можешь взглянуть на его план.

Держите профайлер включенным ... Пока сервак не упадёт.
...
Рейтинг: 0 / 0
24.12.2014, 11:56
    #38841508
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
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
24.12.2014, 12:05
    #38841519
Владислав Колосов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
Monarchy,
если план не кэширован, то его не увидите никак, кроме как профайлером.
...
Рейтинг: 0 / 0
25.12.2014, 22:20
    #38843387
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
Владислав Колосов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
Период между сообщениями больше года.
30.10.2019, 17:41
    #39883229
Monarchy
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
не выдает некоторые планы запросов в Sql Server 2012
Вот тот искомый хитрый 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
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / не выдает некоторые планы запросов в Sql Server 2012 / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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