Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посмотреть какая часть процедуры выполняется / 6 сообщений из 6, страница 1 из 1
09.10.2019, 15:18
    #39874120
assmsk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
Всем привет.
К примеру есть какая то процедура:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Create procedure test_proc as 

Insert t
Select  * from t2


Delete from t where id = 0


Update t set dt = getdate()



Запускаю ее:
Код: sql
1.
exec test_proc




Смотрю через activity monitor на каком моменте она сейчас выполняется, предположим
что сейчас выполняется Delete :
Код: sql
1.
Delete from t where id = 0




И вижу в active expensive queries этот фрагмент кода:
Код: sql
1.
Delete from t where id = 0



Вопрос. Когда часть кода висит в каком то ожидании и delete пока что не происходит, то я не вижу какая часть процедуры выполняется в active expensive queries, а в Processes вижу
Код: sql
1.
exec test_proc



Как в таком случае посмотреть какая конкретная часть кода в данный момент пытается выполниться?
...
Рейтинг: 0 / 0
09.10.2019, 15:26
    #39874128
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
sys.dm_exec_requests.statement_start_offset +
sys.dm_exec_requests.statement_end_offset +
sys.dm_exec_sql_text.text
...
Рейтинг: 0 / 0
09.10.2019, 16:17
    #39874178
Cristiano_Rivaldo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
Код: 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.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT d.name			database_name,
		   r.start_time,
		   r.[status],
		   r.transaction_id,
		   r.session_id,
		   blocking_session_id,	   
		   sq.[text],
		   r.sql_handle,
		   o.name   [object_name],
		   case 
				when r.transaction_isolation_level = 0 THEN 'не указан'
				when r.transaction_isolation_level = 1 THEN 'читать незафиксированные'
				when r.transaction_isolation_level = 2 THEN 'читать зафиксированные'
				when r.transaction_isolation_level = 3 THEN 'повторяемые результаты'
				when r.transaction_isolation_level = 4 THEN 'сериализуемые'
				when r.transaction_isolation_level = 5 THEN 'моментальный снимок'
		   END   isolation_lvl,
		   r.total_elapsed_time/1000 as [total_elapsed_time, sec],  
		   r.wait_time/1000 as [wait_time, sec], 
		  (r.total_elapsed_time - r.wait_time)/1000 as [work_time, sec] ,
		  ss.login_name,
		  CASE   
			 WHEN r.[statement_start_offset] > 0 THEN  
				--The start of the active command is not at the beginning of the full command text 
				CASE r.[statement_end_offset]  
				   WHEN -1 THEN  
					  --The end of the full command is also the end of the active statement 
					  SUBSTRING(sq.TEXT, (r.[statement_start_offset]/2) + 1, 2147483647) 
				   ELSE   
					  --The end of the active statement is not at the end of the full command 
					  SUBSTRING(sq.TEXT, (r.[statement_start_offset]/2) + 1, (r.[statement_end_offset] - r.[statement_start_offset])/2)   
				END  
			 ELSE  
				--1st part of full command is running 
				CASE r.[statement_end_offset]  
				   WHEN -1 THEN  
					  --The end of the full command is also the end of the active statement 
					  RTRIM(LTRIM(sq.[text]))  
				   ELSE  
					  --The end of the active statement is not at the end of the full command 
					  LEFT(sq.TEXT, (r.[statement_end_offset]/2) +1)  
				END  
			END AS [executing statement]  
    FROM sys.dm_exec_requests  r
		cross APPLY sys.dm_exec_sql_text(r.sql_handle) sq
		inner join sys.databases AS d ON  r.database_id = d.database_id
		LEFT JOIN sys.objects AS o ON sq.objectid = o.[object_id]
		left join sys.dm_exec_sessions ss on r.session_id = ss.session_id
    ORDER BY r.total_elapsed_time desc
...
Рейтинг: 0 / 0
09.10.2019, 16:25
    #39874186
TaPaK
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
Cristiano_Rivaldo,

перевод уровней изоляций впечатляет
...
Рейтинг: 0 / 0
09.10.2019, 16:29
    #39874190
msLex
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
TaPaKCristiano_Rivaldo,

перевод уровней изоляций впечатляетэто официальный "перевод"
...
Рейтинг: 0 / 0
09.10.2019, 16:30
    #39874194
Cristiano_Rivaldo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как посмотреть какая часть процедуры выполняется
TaPaK,

Ну норм ...
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посмотреть какая часть процедуры выполняется / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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