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

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Я уже наталкивался на эту ошибку,
даже получал ответы в других темах

https://www.sql.ru/forum/1027021/deadlock-smotru-v-knigu-vizhu-figu?hl=

Но основная проблема для меня осталась "как найти какой запрос вызвал эту ошибку".
В первом случае я заведомо знал где она и option(maxdop 1) работает.
Но найти это через информацию errorlog или Service Brocker у меня НЕ получилось.

Сервис брокером вполне можно будет выяснить "в какой базе".

Как-нибудь получить больше чем

errorlog
2013-09-05 11:28:31.88 spid6s Wait-for graph
2013-09-05 11:28:31.88 spid6s
2013-09-05 11:28:31.88 spid6s Node:1

2013-09-05 11:28:31.88 spid6s Port: 0x0000000326C70D00 Xid Slot: 8, Wait Slot: 3, Task: 0x00000002760922C8, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-05 11:28:31.88 spid6s ResType:ExchangeId Stype:'AND' SPID:193 BatchID:0 ECID:17 TaskProxy:(0x000000024FE199E0) Value:0x760922c8 Cost:(20/0)
2013-09-05 11:28:31.88 spid6s SPID: 193 ECID: 17 Statement Type: SELECT INTO Line #: 54
2013-09-05 11:28:31.88 spid6s Input Buf: No Event:
2013-09-05 11:28:31.88 spid6s
2013-09-05 11:28:31.88 spid6s Node:2

2013-09-05 11:28:31.88 spid6s Port: 0x00000000F4908840 Xid Slot: 11, Wait Slot: 1, Task: 0x00000001A058D288, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-05 11:28:31.88 spid6s ResType:ExchangeId Stype:'AND' SPID:193 BatchID:0 ECID:14 TaskProxy:(0x000000024FE198C0) Value:0xa058d288 Cost:(20/0)
2013-09-05 11:28:31.88 spid6s SPID: 193 ECID: 14 Statement Type: SELECT INTO Line #: 54
2013-09-05 11:28:31.88 spid6s Input Buf: No Event:
2013-09-05 11:28:31.88 spid6s


можно?

Заранее спасибо!
6 сен 13, 14:14    [14804587]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Вот пример файла

К сообщению приложен файл (160_errorLog.txt - 67Kb) cкачать
6 сен 13, 14:16    [14804596]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
профайлер, xevents, есть же "намеки": "Statement Type: SELECT INTO Line #: 54"
6 сен 13, 14:38    [14804766]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Профайлер должен "был быть включен", а тут я уже по факту увидел.

Этот намёк в туче процедур с динамическими запросами - иголка в стоге сена.
6 сен 13, 14:42    [14804813]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
а в чем проблема писать batch complete + rpc complete?
xevents - у вас уже доступны, раз настроил и пусть логирует, там доступен input buffer как минимум
6 сен 13, 14:44    [14804840]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Не совсем осознал крайнюю фразу.

Если я выберу события завершения процедур и запросов, то там будет "много много".

И так что бы я вас понял что вы подразумеваете под "xevents" какое-то общепринятое сокращение Extendeded Events о котором я не знаю и надо "выбрать все варианты блокировок" (или НЕ все) для данной проблемы или какой-то конкретный event при настройке профайлера?
6 сен 13, 14:52    [14804929]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Crimean
Member

Откуда:
Сообщений: 13148
если логировать только batch / rpc complete события - вроде как не должно получиться очень много. зато после по времени + spid можно однозначно определить запрос. насчет xevents - логировать дедлоки. вообще-то ловить дедлоки в 2008 сервере через errorlog - совершенно нет смысла
6 сен 13, 15:09    [14805078]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
т. е. по сути косвенный метод поиска рекомендуете (по времени/дате)?

Просто само событие отловить не так легко (бывает очень долго нет, со строкой 54 вообще первый раз, а что было до этого знал заведомо). Да и не уверен в качестве фротнэнд когда с цикличным/многократным вызовом процедур.
6 сен 13, 17:50    [14806080]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Плохо получается

Если делаю "с показом процедур и запросов", то реально много данных приходит (думаю косяк фротнэнда и цикличность вызова... часто по строчке то-то возвращается/вызывается больше чем надо раз), а когда появится эта ошибка я не могу угадать, но появляется редко, даже не каждую неделю, но может и несколько дней подряд.

Если убираю процедуры и оставляю только различные блокировки, то данных "обозримое количество", а вот информативности - ноль.
12 сен 13, 18:43    [14833065]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NIIIK
информативности - ноль

Вы всё ещё ковыряете трейсфлаг 1204?
13 сен 13, 08:54    [14834483]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Нет, крайнее было про профайлер.
Естественно в errorlog появляются время от времени эти дедлоки.
13 сен 13, 12:16    [14835959]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
А extended events, без отсылки на почту и с автоматическим оперативным анализом, не подошёл?
13 сен 13, 12:19    [14835983]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Гость333,

Если вы имеете в виду статью Александра Гладченко, то нет,
если вы имеете в виду
http://technet.microsoft.com/en-us/library/bb630282(v=sql.100).aspx
(я даже не понял про что говорят в сообщении и контекст попутал, просто сказали как вещь "общеизвестную).

У меня не получилось,
пытался создавать так (ГУИ в 2008Р2 нет)

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='test_session')
    DROP EVENT session test_session ON SERVER;
GO
CREATE EVENT SESSION test_session
ON SERVER
    ADD EVENT sqlserver.xml_deadlock_report,
    ADD EVENT sqlserver.lock_acquired,
    add event sqlserver.lock_deadlock
    
    ADD TARGET package0.etw_classic_sync_target 
        (SET default_etw_session_logfile_path = N'D:\Nikita\sqletw.etl' )
    WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
GO

ALTER EVENT SESSION test_session on server STATE=START
go


(взял пример с мануала)
но в файле D:\Nikita\sqletw.etl ничего не появляется даже когда делаю дедлок намерянно

но !!!

используя этот запрос
use master 
go

SELECT
       xed.value('@timestamp', 'datetime') as Creation_Date,
       xed.query('.') AS Extend_Event
FROM
(
       SELECT CAST([target_data] AS XML) AS Target_Data
       FROM sys.dm_xe_session_targets AS xt
       INNER JOIN sys.dm_xe_sessions AS xs
       ON xs.address = xt.event_session_address
       WHERE xs.name = N'system_health'
       AND xt.target_name = N'ring_buffer'
) AS XML_Data
CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xed)
ORDER BY Creation_Date DESC


который я взял от сюда в ХМЛнике я вижу название процедуры в которой заведомо знаю о блокировке (убрал option(maxdop 1).
Единственное что записи там только "за сегодня".
А другую, которую пытаюсь найти, я там не вижу.

Мануал по этом Extended Events явно не "удобный".
14 сен 13, 01:42    [14839140]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Не знаю оптимальное ли решение,
но сделал так

1) создаём сессию событий (можно без второго event)

IF EXISTS(SELECT * FROM sys.server_event_sessions WHERE name='test_session')
    DROP EVENT session test_session ON SERVER;
GO
CREATE EVENT SESSION test_session
ON SERVER
    ADD EVENT sqlserver.xml_deadlock_report,
    --ADD EVENT sqlserver.lock_acquired,
    add event sqlserver.lock_deadlock
    
    ADD TARGET package0.ring_buffer (
       SET max_memory=4096)
    WITH (MAX_MEMORY=4MB, MAX_EVENT_SIZE=4MB);
GO

ALTER EVENT SESSION test_session on server STATE=START
go


В принципе те события что с блокировками можно посмотреть так
select * from sys.dm_xe_objects
where name like '%lock%'


Дальше "ждём".

Как дождались (или сами создали) - выполняем запрос

SELECT
       xed.value('@timestamp', 'datetime') as Creation_Date,
       xed.query('.') AS Extend_Event,
       --This field decrease the query perfromance
       cast(xed.value('./data[1]/value[1]', 'nvarchar(max)') as xml) AS deadLockXmlGraph
       
FROM
(
       SELECT CAST([target_data] AS xml) AS Target_Data
       FROM sys.dm_xe_session_targets AS xt
       INNER JOIN sys.dm_xe_sessions AS xs
       ON xs.address = xt.event_session_address
       WHERE xs.name = N'test_session'
       AND xt.target_name = N'ring_buffer'
) AS XML_Data
CROSS APPLY Target_Data.nodes('RingBufferTarget/event[@name="xml_deadlock_report"]') AS XEventData(xed)
ORDER BY Creation_Date DESC


или
Далее (ориентируемся так же по датам) смотрим ХМЛник

Там будет тэг <inputbuf> его и юзаем (можно вывести сразу, тут уже работа с ХМЛем).

В графе блокировки (и их много) есть куча непонятых параметров
Возможно по ним можно получить какую-то доп информацию

<frame procname="" line="1" sqlhandle="0x01001f0078c8b514007f6772030000000000000000000000" />


я не в курсе :)

Но главное что есть не просто процедура, а готовый тест-кейс с параметрами.
14 сен 13, 16:05    [14839797]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NIIIK
Гость333,

Если вы имеете в виду статью Александра Гладченко, то нет,
если вы имеете в виду
http://technet.microsoft.com/en-us/library/bb630282(v=sql.100).aspx
(я даже не понял про что говорят в сообщении и контекст попутал, просто сказали как вещь "общеизвестную).

Да я тоже перепутал, помнится, в той ветке я предлагал сделать обработку через Event Notifications. Только не с отсылкой на почту, а со складированием XML-графов в отдельную таблицу и автоматическим анализом sqlhandle в процедуре-обработчике.

NIIIK
Возможно по ним можно получить какую-то доп информацию

<frame procname="" line="1" sqlhandle="0x01001f0078c8b514007f6772030000000000000000000000" />

sqlhandle можно передать в функцию sys.dm_exec_sql_text и узнать базу данных и текст запроса.
14 сен 13, 16:17    [14839836]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Попался запрос, но в нём нет полного тест-кейса

XML-ник выглядит так

<deadlock>
  <victim-list />
  <process-list>
    <process id="processd65fa988" taskpriority="0" logused="10000" waittime="2103" schedulerid="4" kpid="16468" status="suspended" spid="185" sbid="0" ecid="17" priority="0" trancount="0" lastbatchstarted="2013-09-18T17:40:48.647" lastbatchcompleted="2013-09-18T17:40:48.647" clientapp=".Net SqlClient Data Provider" hostname="WEBPROD1" hostpid="9676" isolationlevel="read committed (2)" xactid="1721938179" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
      <executionStack>
        <frame procname="" line="54" stmtstart="3808" stmtend="6144" sqlhandle="0x0200000067ff2901ca64c0f70ff5d914b68e370effd9038d" />
        <frame procname="" line="1" sqlhandle="0x0400ff7fbe80662601000000000000000000000000000000" />
        <frame procname="" line="1077" stmtstart="64154" sqlhandle="0x030005000a38a07193fc6201eaa100000100000000000000" />
      </executionStack>
      <inputbuf />
    </process>
    <process id="process1c6b7a748" taskpriority="0" logused="10000" waittime="2077" schedulerid="5" kpid="11336" status="suspended" spid="185" sbid="0" ecid="15" priority="0" trancount="0" lastbatchstarted="2013-09-18T17:40:48.647" lastbatchcompleted="2013-09-18T17:40:48.647" clientapp=".Net SqlClient Data Provider" hostname="WEBPROD1" hostpid="9676" isolationlevel="read committed (2)" xactid="1721938179" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
      <executionStack>
        <frame procname="" line="54" stmtstart="3808" stmtend="6144" sqlhandle="0x0200000067ff2901ca64c0f70ff5d914b68e370effd9038d" />
        <frame procname="" line="1" sqlhandle="0x0400ff7fbe80662601000000000000000000000000000000" />
        <frame procname="" line="1077" stmtstart="64154" sqlhandle="0x030005000a38a07193fc6201eaa100000100000000000000" />
      </executionStack>
      <inputbuf />
    </process>
    <process id="processd65fa2c8" taskpriority="0" logused="10000" waittime="2102" schedulerid="4" kpid="6864" status="suspended" spid="185" sbid="0" ecid="14" priority="0" trancount="0" lastbatchstarted="2013-09-18T17:40:48.647" lastbatchcompleted="2013-09-18T17:40:48.647" clientapp=".Net SqlClient Data Provider" hostname="WEBPROD1" hostpid="9676" isolationlevel="read committed (2)" xactid="1721938179" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
      <executionStack>
        <frame procname="" line="54" stmtstart="3808" stmtend="6144" sqlhandle="0x0200000067ff2901ca64c0f70ff5d914b68e370effd9038d" />
        <frame procname="" line="1" sqlhandle="0x0400ff7fbe80662601000000000000000000000000000000" />
        <frame procname="" line="1077" stmtstart="64154" sqlhandle="0x030005000a38a07193fc6201eaa100000100000000000000" />
      </executionStack>
      <inputbuf />
    </process>
    <process id="process811a6bc8" taskpriority="0" logused="10000" waittime="2164" schedulerid="7" kpid="13052" status="suspended" spid="185" sbid="0" ecid="9" priority="0" trancount="0" lastbatchstarted="2013-09-18T17:40:48.647" lastbatchcompleted="2013-09-18T17:40:48.647" clientapp=".Net SqlClient Data Provider" hostname="WEBPROD1" hostpid="9676" isolationlevel="read committed (2)" xactid="1721938179" currentdb="5" lockTimeout="4294967295" clientoption1="671088672" clientoption2="128056">
      <executionStack>
        <frame procname="" line="54" stmtstart="3808" stmtend="6144" sqlhandle="0x0200000067ff2901ca64c0f70ff5d914b68e370effd9038d" />
        <frame procname="" line="1" sqlhandle="0x0400ff7fbe80662601000000000000000000000000000000" />
        <frame procname="" line="1077" stmtstart="64154" sqlhandle="0x030005000a38a07193fc6201eaa100000100000000000000" />
      </executionStack>
      <inputbuf />
    </process>
  </process-list>
  <resource-list>
    <exchangeEvent id="Pipe2a4ed6200" WaitType="e_waitPipeNewRow" nodeId="32">
      <owner-list>
        <owner id="process1c6b7a748" />
      </owner-list>
      <waiter-list>
        <waiter id="processd65fa988" />
      </waiter-list>
    </exchangeEvent>
    <exchangeEvent id="Pipef483f3d0" WaitType="e_waitPipeNewRow" nodeId="30">
      <owner-list>
        <owner id="process811a6bc8" />
      </owner-list>
      <waiter-list>
        <waiter id="process1c6b7a748" />
      </waiter-list>
    </exchangeEvent>
    <exchangeEvent id="Pipe2a4ed6080" WaitType="e_waitPipeGetRow" nodeId="32">
      <owner-list>
        <owner id="processd65fa988" />
      </owner-list>
      <waiter-list>
        <waiter id="processd65fa2c8" />
      </waiter-list>
    </exchangeEvent>
    <exchangeEvent id="Pipe9d9d0160" WaitType="e_waitPipeGetRow" nodeId="30">
      <owner-list>
        <owner id="processd65fa2c8" />
      </owner-list>
      <waiter-list>
        <waiter id="process811a6bc8" />
      </waiter-list>
    </exchangeEvent>
  </resource-list>
</deadlock>


Саму процудуру и запрос определил уже методом

select *, DB_NAME(t.dbid),  CAST('<x><![CDATA[' + t.text + ']]></x>' as xml) from sys.dm_exec_sql_text  (0x030005000a38a07193fc6201eaa100000100000000000000) t
select *, DB_NAME(t.dbid),  CAST('<x><![CDATA[' + t.text + ']]></x>' as xml) from sys.dm_exec_sql_text (0x0400ff7fbe80662601000000000000000000000000000000) t
select *, DB_NAME(t.dbid),  CAST('<x><![CDATA[' + t.text + ']]></x>' as xml) from sys.dm_exec_sql_text (0x02000000b3d62112cf8ce88989ec4b9cbb0fc253333c9338) t


Среди них оказался только один который говорил "в какой базе" и это
CREATE PROCEDURE [dbo].[sp


Потом второй содержит только
sp_executesql

Причём dbid = 32767 а вот имя базы со столь большим номером "не возвращает".

Далее идёт текст динамического запроса, параметры объявлены но значений НЕТ.

За то в errorlog

errorlog
2013-09-18 17:40:51.01 spid6s Deadlock encountered .... Printing deadlock information
2013-09-18 17:40:51.01 spid6s Wait-for graph
2013-09-18 17:40:51.01 spid6s
2013-09-18 17:40:51.01 spid6s Node:1

2013-09-18 17:40:51.01 spid6s Port: 0x00000002A4ED6200 Xid Slot: 8, Wait Slot: 3, Task: 0x00000000D65FA988, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-18 17:40:51.01 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:17 TaskProxy:(0x000000039972DB60) Value:0xd65fa988 Cost:(20/0)
2013-09-18 17:40:51.01 spid6s SPID: 185 ECID: 17 Statement Type: SELECT INTO Line #: 54
2013-09-18 17:40:51.01 spid6s Input Buf: No Event:
2013-09-18 17:40:51.02 spid6s
2013-09-18 17:40:51.02 spid6s Node:2

2013-09-18 17:40:51.02 spid6s Port: 0x00000000F483F3D0 Xid Slot: 11, Wait Slot: 1, Task: 0x00000001C6B7A748, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-18 17:40:51.02 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:15 TaskProxy:(0x000000039972DAA0) Value:0xc6b7a748 Cost:(20/0)
2013-09-18 17:40:51.02 spid6s SPID: 185 ECID: 15 Statement Type: SELECT INTO Line #: 54
2013-09-18 17:40:51.02 spid6s Input Buf: No Event:
2013-09-18 17:40:51.02 spid6s
2013-09-18 17:40:51.02 spid6s Node:3

2013-09-18 17:40:51.02 spid6s Port: 0x00000002A4ED6080 Xid Slot: 0, Wait Slot: -1, Task: 0x00000000D65FA2C8, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-09-18 17:40:51.02 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:14 TaskProxy:(0x000000039972DA40) Value:0xd65fa2c8 Cost:(0/10000)
2013-09-18 17:40:51.02 spid6s SPID: 185 ECID: 14 Statement Type: SELECT INTO Line #: 54
2013-09-18 17:40:51.02 spid6s Input Buf: No Event:
2013-09-18 17:40:51.02 spid6s
2013-09-18 17:40:51.02 spid6s Node:4

2013-09-18 17:40:51.02 spid6s Port: 0x000000009D9D0160 Xid Slot: 1, Wait Slot: 8, Task: 0x00000000811A6BC8, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-09-18 17:40:51.02 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:9 TaskProxy:(0x000000039972DC20) Value:0x811a6bc8 Cost:(0/10000)
2013-09-18 17:40:51.02 spid6s SPID: 185 ECID: 9 Statement Type: SELECT INTO Line #: 54
2013-09-18 17:40:51.02 spid6s Input Buf: No Event:
2013-09-18 17:40:56.01 spid6s Deadlock encountered .... Printing deadlock information
2013-09-18 17:40:56.01 spid6s Wait-for graph
2013-09-18 17:40:56.01 spid6s
2013-09-18 17:40:56.01 spid6s Node:1

2013-09-18 17:40:56.01 spid6s Port: 0x00000002A4ED6380 Xid Slot: 8, Wait Slot: 6, Task: 0x00000000D65FA988, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-18 17:40:56.01 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:17 TaskProxy:(0x000000039972DB60) Value:0xd65fa988 Cost:(20/0)
2013-09-18 17:40:56.01 spid6s
2013-09-18 17:40:56.01 spid6s Node:2

2013-09-18 17:40:56.01 spid6s Port: 0x00000001CBD3F0E0 Xid Slot: 14, Wait Slot: 0, Task: 0x00000000811F7288, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-09-18 17:40:56.01 spid6s ResType:ExchangeId Stype:'AND' SPID:185 BatchID:0 ECID:9 TaskProxy:(0x000000039972DF20) Value:0x811f7288 Cost:(20/0)
2013-09-18 17:40:56.01 spid6s SPID: 185 ECID: 9 Statement Type: SELECT INTO Line #: 54
2013-09-18 17:40:56.01 spid6s Input Buf: No Event:
2013-09-18 17:40:56.01 spid6s
2013-09-18 17:40:56.01 spid6s Node:3


и это
<frame procname="" line="54" stmtstart="3808" stmtend="6274" sqlhandle="0x02000000b3d62112cf8ce88989ec4b9cbb0fc253333c9338" />


соответствую динамическому запросу
19 сен 13, 17:04    [14860652]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NIIIK
Причём dbid = 32767 а вот имя базы со столь большим номером "не возвращает"

База данных Resource
19 сен 13, 17:14    [14860703]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Гость333,

У вас есть какая-нить идея отловить тест-кейс?
А то так то сложно дебажить без параметров. Процедура запускается крайне часто (Постоянно) а ошибка не каждый день.
19 сен 13, 17:31    [14860805]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Параметры запроса по sqlhandle
вытянуть есть возможность?
19 сен 13, 17:38    [14860851]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
Гость333
Member

Откуда:
Сообщений: 3683
NIIIK
Параметры запроса по sqlhandle
вытянуть есть возможность?

Нет такой возможности. Sql handle — это идентификатор текста запроса и не зависит от значений параметров.

Значения параметров есть, например, в XML-плане запроса. Но это будут значения на момент построения плана. При повторном использовании плана эти значения не меняются. Кроме того, непонятно, как связать sql handle и plan handle. Одновременно эти два значения встречаются, например, в sys.dm_exec_requests — но в этом DMV есть только активные процессы.
19 сен 13, 18:13    [14861086]     Ответить | Цитировать Сообщить модератору
 Re: intra-query parallelism deadlocks как найти источник ошибки?  [new]
NIIIK
Member

Откуда: Россия, Ростовская область, г. Таганрог
Сообщений: 1295
Опять тот же головняк всплыл. Вид сбоку.

errorlog
2013-11-27 17:01:23.08 spid4s Deadlock encountered .... Printing deadlock information
2013-11-27 17:01:23.08 spid4s Wait-for graph
2013-11-27 17:01:23.08 spid4s
2013-11-27 17:01:23.08 spid4s Node:1

2013-11-27 17:01:23.08 spid4s Port: 0x000000010997FE00 Xid Slot: 4, Wait Slot: 2, Task: 0x000000028FB5EBC8, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-11-27 17:01:23.08 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:22 TaskProxy:(0x0000000142421E70) Value:0x8fb5ebc8 Cost:(20/0)
2013-11-27 17:01:23.08 spid4s SPID: 170 ECID: 22 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:23.08 spid4s Input Buf: No Event:
2013-11-27 17:01:23.08 spid4s
2013-11-27 17:01:23.08 spid4s Node:2

2013-11-27 17:01:23.08 spid4s Port: 0x00000001611DD580 Xid Slot: 6, Wait Slot: 0, Task: 0x0000000266AF6E08, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-11-27 17:01:23.08 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:20 TaskProxy:(0x0000000142421DB0) Value:0x66af6e08 Cost:(20/0)
2013-11-27 17:01:23.08 spid4s SPID: 170 ECID: 20 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:23.08 spid4s Input Buf: No Event:
2013-11-27 17:01:23.08 spid4s
2013-11-27 17:01:23.08 spid4s Node:3

2013-11-27 17:01:23.08 spid4s Port: 0x000000015B93F970 Xid Slot: 0, Wait Slot: 4, Task: 0x000000028FB5E988, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-11-27 17:01:23.08 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:16 TaskProxy:(0x0000000142421C30) Value:0x8fb5e988 Cost:(0/10000)
2013-11-27 17:01:23.08 spid4s SPID: 170 ECID: 16 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:23.08 spid4s Input Buf: No Event:
2013-11-27 17:01:23.08 spid4s
2013-11-27 17:01:23.08 spid4s Node:4

2013-11-27 17:01:23.08 spid4s Port: 0x000000010997FD00 Xid Slot: 0, Wait Slot: -1, Task: 0x000000028FB5FB88, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-11-27 17:01:23.08 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:21 TaskProxy:(0x0000000142421E10) Value:0x8fb5fb88 Cost:(0/10000)
2013-11-27 17:01:23.08 spid4s SPID: 170 ECID: 21 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:23.08 spid4s Input Buf: No Event:
2013-11-27 17:01:35.60 spid4s Deadlock encountered .... Printing deadlock information
2013-11-27 17:01:35.60 spid4s Wait-for graph
2013-11-27 17:01:35.60 spid4s
2013-11-27 17:01:35.60 spid4s Node:1

2013-11-27 17:01:35.60 spid4s Port: 0x000000036B565D80 Xid Slot: 4, Wait Slot: 1, Task: 0x00000000809F3048, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-11-27 17:01:35.60 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:22 TaskProxy:(0x0000000142421E20) Value:0x809f3048 Cost:(20/0)
2013-11-27 17:01:35.60 spid4s SPID: 170 ECID: 22 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:35.60 spid4s Input Buf: No Event:
2013-11-27 17:01:35.60 spid4s
2013-11-27 17:01:35.60 spid4s Node:2

2013-11-27 17:01:35.60 spid4s Port: 0x000000015C8B7A90 Xid Slot: 5, Wait Slot: 3, Task: 0x0000000266AF7B88, (Producer), Exchange Wait Type: e_waitPipeNewRow, Merging: 1
2013-11-27 17:01:35.60 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:20 TaskProxy:(0x0000000142421D60) Value:0x66af7b88 Cost:(20/0)
2013-11-27 17:01:35.60 spid4s SPID: 170 ECID: 20 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:35.60 spid4s Input Buf: No Event:
2013-11-27 17:01:35.60 spid4s
2013-11-27 17:01:35.60 spid4s Node:3

2013-11-27 17:01:35.60 spid4s Port: 0x000000036B4D53B0 Xid Slot: 3, Wait Slot: 7, Task: 0x0000000307158088, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-11-27 17:01:35.60 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:16 TaskProxy:(0x0000000142421BE0) Value:0x7158088 Cost:(0/10000)
2013-11-27 17:01:35.60 spid4s SPID: 170 ECID: 16 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:35.60 spid4s Input Buf: No Event:
2013-11-27 17:01:35.60 spid4s
2013-11-27 17:01:35.60 spid4s Node:4

2013-11-27 17:01:35.60 spid4s Port: 0x000000036B565E80 Xid Slot: 3, Wait Slot: -1, Task: 0x0000000080C9F708, (Consumer), Exchange Wait Type: e_waitPipeGetRow, Merging: 0
2013-11-27 17:01:35.60 spid4s ResType:ExchangeId Stype:'AND' SPID:170 BatchID:0 ECID:21 TaskProxy:(0x0000000142421DC0) Value:0x80c9f708 Cost:(0/10000)
2013-11-27 17:01:35.60 spid4s SPID: 170 ECID: 21 Statement Type: SELECT INTO Line #: 30
2013-11-27 17:01:35.60 spid4s Input Buf: No Event:




Даже не знаю как узнать какую из баз мониторить :(
28 ноя 13, 18:04    [15207675]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить