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

Откуда: г. Екатеринбург
Сообщений: 666
Добрый день.

Работает пользователей примерно 50 в одной локальной сети. Иногда 1 раз а час-два у кого-ни-будь возникает ошибка:

Error: SCH_EV1_FixMessage, 1205, Транзакция (идентификатор процесса 55) вызвала взаимоблокировку ресурсов блокировка | буфер 
связи с другим процессом и стала жертвой взаимоблокировки. Запустите транзакцию повторно.


При вызове хранимки, в начале вызывается BEGIN TRANSACTION, затем множество различных операций в виде вызова хранимых процедур и COMMIT TRANSACTION.

Да, воспроизводиться, так сказать, в последних обновлениях, действительно SCH_EV1_FixMessage новая хранимка... но не могу понять, что за взаимоблокировка... посоветуйте на что стоит обратить внимание?
7 окт 19, 11:53    [21988046]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
Yasha123
Member

Откуда:
Сообщений: 1562
граф отловите и сюда выложьте
7 окт 19, 12:22    [21988081]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 666
Yasha123
граф отловите и сюда выложьте


"граф отловите" - это как отловить, не совсем понял...
7 окт 19, 12:45    [21988110]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
uaggster
Member

Откуда:
Сообщений: 715
Игорь_UUS
Yasha123
граф отловите и сюда выложьте


"граф отловите" - это как отловить, не совсем понял...

https://www.mssqltips.com/sqlservertip/5658/capturing-sql-server-deadlocks-using-extended-events/
7 окт 19, 12:50    [21988118]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4990
Игорь_UUS,

если default trace включен, то попробуйте запросом :

SELECT 
		dateadd(hh
			,datediff(hh,getutcdate(),getdate())
			,convert(datetime,CONVERT(xml, f.event_data).value('(event[@name="xml_deadlock_report"]/@timestamp)[1]','datetime'))
			) as  [dt]
		,CONVERT(xml, event_data).query('/event/data/value/child::*') [Deadlock]
FROM sys.traces t 
cross apply sys.fn_xe_file_target_read_file(reverse(stuff(reverse(t.[path]),1,CHARINDEX('\',reverse(t.[path]),1)-1,''))+'system_health*.xel', null,  null, null) f
WHERE f.object_name = 'xml_deadlock_report'
order by 1 desc
7 окт 19, 13:24    [21988171]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
invm
Member

Откуда: Москва
Сообщений: 8797
Игорь_UUS
это как отловить
https://social.msdn.microsoft.com/Forums/sqlserver/en-US/adeec544-3365-4a69-addd-7db0c7529f41/how-can-sql-capture-deadlock-in-default-trace?forum=sqldatabaseengine
7 окт 19, 13:24    [21988172]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
Игорь_UUS
Member

Откуда: г. Екатеринбург
Сообщений: 666
komrad
Игорь_UUS,

если default trace включен, то попробуйте запросом :

SELECT 
		dateadd(hh
			,datediff(hh,getutcdate(),getdate())
			,convert(datetime,CONVERT(xml, f.event_data).value('(event[@name="xml_deadlock_report"]/@timestamp)[1]','datetime'))
			) as  [dt]
		,CONVERT(xml, event_data).query('/event/data/value/child::*') [Deadlock]
FROM sys.traces t 
cross apply sys.fn_xe_file_target_read_file(reverse(stuff(reverse(t.[path]),1,CHARINDEX('\',reverse(t.[path]),1)-1,''))+'system_health*.xel', null,  null, null) f
WHERE f.object_name = 'xml_deadlock_report'
order by 1 desc


Что-то получил... несколько записей...
на что там обратить внимание, как правильно читать?
7 окт 19, 14:35    [21988307]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
Yasha123
Member

Откуда:
Сообщений: 1562
Игорь_UUS
Что-то получил... несколько записей...
на что там обратить внимание, как правильно читать?

вываливайте весь xml под спойлер
7 окт 19, 14:56    [21988348]     Ответить | Цитировать Сообщить модератору
 Re: Транзакция вызвала взаимоблокировку ресурсов. Посоветуйте что делать?  [new]
komrad
Member

Откуда: Msk -> Utrecht
Сообщений: 4990
где-то потерялся t.id=1

вот верный вариант:

SELECT 
		dateadd(hh
			,datediff(hh,getutcdate(),getdate())
			,convert(datetime,CONVERT(xml, f.event_data).value('(event[@name="xml_deadlock_report"]/@timestamp)[1]','datetime'))
			) as  [dt]
		,CONVERT(xml, event_data).query('/event/data/value/child::*') [Deadlock]
FROM sys.traces t 
cross apply sys.fn_xe_file_target_read_file(reverse(stuff(reverse(t.[path]),1,CHARINDEX('\',reverse(t.[path]),1)-1,''))+'system_health*.xel', null,  null, null) f
WHERE f.object_name = 'xml_deadlock_report'

and t.id=1

order by 1 desc
[/quot]
7 окт 19, 15:19    [21988384]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить