Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 прикольный дедлок, подтвердите догадку  [new]
ups_ops
Guest
граждане,
у меня нет ALTER TRACE,
зато есть дедлок на ровном месте,
код - проще не бывает.
создается временная таблица и мне нужен упорядоченный список ее полей,
пишу такое:

select cast( '1234' as varchar(9)) as abc,
       cast( 10 as decimal(10, 0)) as def,
       1 as col1,
       2 as col2,
       3 as col3
into #full       

declare @struct table(n int identity(-1,1) primary key, id int, name sysname);

insert into @struct(id, name)
select column_id as id, name
from tempdb.sys.columns 
order by id

select *
from @struct


Msg 1205, Level 13, State 56, Line 11
Transaction (Process ID 71) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.


я так понимаю, потерян фильтр по моей таблице,
если дописать
where c.object_id = object_id('tempdb..#full')

никакого дедлока.
вот подозреваю, без фильтра табличая переменная должна была в себя записать
свои же колонки, и поэтому весь бардак.
но не совсем понятно, метаданные же считывает с sys.columns,
как @struct саму себя умудряется блокировать?
9 ноя 12, 18:06    [13448481]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Версия сервера какая?
9 ноя 12, 18:07    [13448491]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
ups_ops
Guest
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)   Jun 17 2011 00:54:03   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.0 <X64> (Build 6002: Service Pack 2) (Hypervisor) 
9 ноя 12, 18:08    [13448496]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
У меня на R1 нет никакого дедлока.
9 ноя 12, 18:09    [13448502]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
1d0
Member

Откуда: инфа100%
Сообщений: 2521
Microsoft SQL Server 2008 R2 (SP2) - 10.50.4000.0 (X64)
Jun 28 2012 08:36:30
Copyright (c) Microsoft Corporation
Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1)


всё нормально
9 ноя 12, 18:12    [13448521]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
ups_ops
Guest
блин, да повторяется же.
комментирую фильтр, получаю дедлок.

К сообщению приложен файл. Размер - 17Kb
9 ноя 12, 18:14    [13448531]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
ups_ops
Guest
ну не знаю, как еще доказать.
вот так - нету дедлока,
а вот раскомменчиваю - все на месте
9 ноя 12, 18:22    [13448594]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
ups_ops
Guest


К сообщению приложен файл. Размер - 21Kb
9 ноя 12, 18:23    [13448598]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
select @@VERSION
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2500.0 (X64)   Jun 17 2011 00:54:03   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7601: Service Pack 1) 
Transaction (Process ID 133) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction.


тьаки да - впопроизводиться на сп1
9 ноя 12, 18:24    [13448611]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
Нет дедлока. Нужен граф, короче.
9 ноя 12, 18:24    [13448615]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Crimean
Member

Откуда:
Сообщений: 13147
графчик дедлока покажите
9 ноя 12, 18:28    [13448640]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
какие-то CU
Guest
Microsoft SQL Server 2008 R2 (SP1) - 10.50.2789.0 (X64)   Sep 28 2011 17:10:21   Copyright (c) Microsoft Corporation  Enterprise Edition (64-bit) on Windows NT 6.1 <X64> (Build 7600: ) 


полет нормальный.
9 ноя 12, 18:30    [13448649]     Ответить | Цитировать Сообщить модератору
 Re: прикольный дедлок, подтвердите догадку  [new]
Maxx
Member [скрыт]

Откуда:
Сообщений: 24290
Microsoft SQL Server 2008 (SP1) - 10.0.2776.0

тоже дедлок ,граф получить не могу :(( прав нет - кляти буржуи :((
Едитсвеное что получил
<deadlock-list>
 <deadlock victim="process521d4c8">
  <process-list>
   <process id="process521d4c8" taskpriority="0" logused="0" waitresource="OBJECT: 2:1099150961:0 " waittime="702" ownerId="22722962" transactionname="CatalogView" lasttranstarted="2012-11-09T10:00:49.947" XDES="0x1a8e19780" lockMode="Sch-S" schedulerid="3" kpid="7616" status="suspended" spid="57" sbid="0" ecid="0" priority="0" trancount="0" lastbatchstarted="2012-11-09T10:00:49.933" lastbatchcompleted="2012-11-09T10:00:42.353" clientapp="Microsoft SQL Server Management Studio - Query" hostname="неважно" hostpid="2492" loginname="точно я" isolationlevel="read committed (2)" xactid="22722453" currentdb="1" lockTimeout="4294967295" clientoption1="671090784" clientoption2="390200">
    <executionStack>
     <frame procname="adhoc" line="11" stmtstart="498" stmtend="700" sqlhandle="0x020000002de406085e54ce1b8edef8a79c5ebc9ca7ce2861">
insert into @struct(id, name)
select column_id as id, name
from tempdb.sys.columns 
order by id     </frame>
    </executionStack>
    <inputbuf>

select cast( &apos;1234&apos; as varchar(9)) as abc,
       cast( 10 as decimal(10, 0)) as def,
       1 as col1,
       2 as col2,
       3 as col3
into #full       

declare @struct table(n int identity(-1,1) primary key, id int, name sysname);

insert into @struct(id, name)
select column_id as id, name
from tempdb.sys.columns 
order by id

select *
from @struct    </inputbuf>
   </process>
  </process-list>
  <resource-list>
   <objectlock lockPartition="0" objid="1099150961" subresource="FULL" dbid="2" objectname="tempdb.dbo.#4183B671" id="lock5af6f00" mode="Sch-M" associatedObjectId="1099150961">
    <owner-list>
     <owner id="process521d4c8" mode="Sch-M"/>
    </owner-list>
    <waiter-list>
     <waiter id="process521d4c8" mode="Sch-S" requestType="wait"/>
    </waiter-list>
   </objectlock>
  </resource-list>
 </deadlock>
</deadlock-list>


К сообщению приложен файл. Размер - 77Kb
9 ноя 12, 19:15    [13448884]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить