これを再現できました。デッドロックグラフは非常に興味深いものです。
<deadlock-list>
<deadlock victim="process47f948">
<process-list>
<process id="process47f948" taskpriority="0" logused="0" waitresource="METADATA: database_id = 2 USER_TYPE(user_type_id = 257)" waittime="3607" ownerId="14873" transactionname="@myPK" lasttranstarted="2013-11-06T13:23:12.177" XDES="0x80f6d950" lockMode="Sch-S" schedulerid="1" kpid="2672" status="suspended" spid="54" sbid="0" ecid="0" priority="0" trancount="1" lastbatchstarted="2013-11-06T13:23:12.167" lastbatchcompleted="2013-11-06T13:23:12.163" clientapp="Microsoft SQL Server Management Studio - Query" hostname="xxxxx" hostpid="5276" loginname="xxxxx\xxxxx" isolationlevel="read committed (2)" xactid="14867" currentdb="2" lockTimeout="4294967295" clientoption1="671090784" clientoption2="390200">
<executionStack>
<frame procname="adhoc" line="2" sqlhandle="0x010002002d9fe3155066b380000000000000000000000000">
declare @myPK dbo.IntIntSet; </frame>
</executionStack>
<inputbuf>
declare @myPK dbo.IntIntSet;
</inputbuf>
</process>
</process-list>
<resource-list>
<metadatalock subresource="USER_TYPE" classid="user_type_id = 257" dbid="2" id="lock8009cc00" mode="Sch-M">
<owner-list>
<owner id="process47f948" mode="Sch-M" />
</owner-list>
<waiter-list>
<waiter id="process47f948" mode="Sch-S" requestType="wait" />
</waiter-list>
</metadatalock>
</resource-list>
</deadlock>
</deadlock-list>
私にはバグのように見えるので、接続アイテムを開くことをお勧めします。
差し迫った問題を回避するために使用できますtSQLt.NewConnection
(tSQLtを使用していると仮定します)
use tempdb
begin tran
go
EXEC tSQLt.NewConnection '
CREATE TYPE dbo.IntIntSet AS TABLE(
Value0 Int NOT NULL,
Value1 Int NOT NULL
)
';
go
declare @myPK dbo.IntIntSet;
go
rollback
テーブル型をその場で作成する必要性がどこから来ているのか、まだわかりません。テストが複雑になりすぎていると思います。議論したい場合は、私にメールを送ってください。