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

Откуда:
Сообщений: 73
Есть ли простой способ проверить статус выполнения хранимой процедуры.
К примеру в мониторе активности заданий в SSAS по статусу сразу видно, что задание, к примеру, выполняется.
Вот в статье описано как по внутреннему тексту хранимой процедуры ее отловить.
Может, среди Вас есть те, кто упростил данную задачку?

К сообщению приложен файл. Размер - 126Kb
10 ноя 17, 12:17    [20943054]     Ответить | Цитировать Сообщить модератору
 Re: Проверка статуса хранимой процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6794
Aleksey br,
я ловлю одним из вариантов:
хотя есть масса готовых вариантов по поиску
SELECT
       CASE transaction_isolation_level 
       WHEN 0 THEN 'Unspecified' 
       WHEN 1 THEN 'ReadUncommitted' 
       WHEN 2 THEN 'ReadCommitted' 
       WHEN 3 THEN 'Repeatable' 
       WHEN 4 THEN 'Serializable' 
       WHEN 5 THEN 'Snapshot' END AS ILevel
,       r.session_id
,       requested_memory_MB = x.requested_memory_kb/1000. 
,       granted_memory_MB = x.granted_memory_kb/1000.
,            x.query_cost
,       r.start_time
,      RunTime = DATEDIFF(s,r.start_time,getdate())/60.
,       TotalElapsedTime_min = r.total_elapsed_time/1000./60.
,       r.[status]
,       r.command
,      r.percent_complete
,       DatabaseName = DB_Name(r.database_id)
,       r.wait_type
,       r.last_wait_type
,       r.wait_resource
,       r.cpu_time
,       r.reads
,       r.writes
,       r.logical_reads
,       t.[text] AS [executing batch]
,       SUBSTRING(
                                t.[text], r.statement_start_offset / 2, 
                                (       CASE WHEN r.statement_end_offset = -1 THEN DATALENGTH (t.[text]) 
                                                 ELSE r.statement_end_offset 
                                        END - r.statement_start_offset ) / 2 
                         ) AS [executing statement] 
,       p.query_plan
FROM
        sys.dm_exec_requests r
CROSS APPLY
        sys.dm_exec_sql_text(r.sql_handle) AS t
CROSS APPLY     
        sys.dm_exec_query_plan(r.plan_handle) AS p
LEFT JOIN
       sys.dm_exec_query_memory_grants         x
ON
       x.session_id  =     r.session_id 
WHERE 
             r.session_id != @@spid       
ORDER BY 
        r.total_elapsed_time DESC;
10 ноя 17, 12:20    [20943072]     Ответить | Цитировать Сообщить модератору
 Re: Проверка статуса хранимой процедуры  [new]
Aleksey br
Member

Откуда:
Сообщений: 73
Aleksey br
Я про эту статью говорил: https://blogs.msdn.microsoft.com/taylaf/2010/01/25/determine-the-currently-executing-statement-in-a-long-running-sql-stored-procedure/]
10 ноя 17, 12:20    [20943075]     Ответить | Цитировать Сообщить модератору
 Re: Проверка статуса хранимой процедуры  [new]
Yasha123
Member

Откуда:
Сообщений: 1833
все выполняющееся в данный момент вы видите в sys.dm_exec_requests.
к нему cross apply-ится sys.dm_exec_sql_text(sql_handle) и можете фильтровать по тексту.
сам сервер еще не озверел логировать исход каждой запускаемой процедуры,
но если вам оно надо, в каждой процедуре реализуйте ее логирование.
10 ноя 17, 12:23    [20943092]     Ответить | Цитировать Сообщить модератору
 Re: Проверка статуса хранимой процедуры  [new]
iii2
Member

Откуда:
Сообщений: 202
http://sqlcom.ru/scripts/who-is-active/
10 ноя 17, 23:22    [20945136]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить