powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Как посмотреть какая часть процедуры выполняется
6 сообщений из 6, страница 1 из 1
Как посмотреть какая часть процедуры выполняется
    #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
Как посмотреть какая часть процедуры выполняется
    #39874128
msLex
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sys.dm_exec_requests.statement_start_offset +
sys.dm_exec_requests.statement_end_offset +
sys.dm_exec_sql_text.text
...
Рейтинг: 0 / 0
Как посмотреть какая часть процедуры выполняется
    #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
Как посмотреть какая часть процедуры выполняется
    #39874186
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Cristiano_Rivaldo,

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

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

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


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