Mic*_*art 14 sql-server-2008 sql-server deadlock sql-server-2012
当我执行以下命令时(在管理工作室中,GO 会将命令分成批处理)
use tempdb
begin tran
go
CREATE TYPE dbo.IntIntSet AS TABLE(
Value0 Int NOT NULL,
Value1 Int NOT NULL
)
go
declare @myPK dbo.IntIntSet;
go
rollback
Run Code Online (Sandbox Code Playgroud)
我收到一条死锁错误消息。我的过程已经陷入僵局。我在 2008、2008R2 和 2012 中看到过这种行为。
有没有办法在它创建的同一个事务中使用我新创建的类型?
Aar*_*and 17
这已被报告不少于四次(但自从 Connect 被谋杀以来,所有痕迹都已从WayBack 机器中删除)。这个是固定关闭的:
但事实并非如此。(另请参阅变通方法部分 - 我建议的变通方法并不总是可以接受的。)
这个是按设计关闭的/不会修复:
这两个更新并且仍然有效:
在 Microsoft 被说服之前,您将不得不找到一种解决方法 - 只需在运行测试之前部署所有类型,或者将其分解为多个测试。
我将尝试从我的联系人那里获得关于 Umachandar 在最早项目中修复的含义的确认,因为这显然与后来的陈述相冲突。
更新 #1(希望正好是 2 个)
原始错误(已修复)涉及别名类型,但不是类型 TABLE. 这是针对 SQL Server 2005 的报告,它显然没有表类型和 TVP。UC 似乎报告说,非表别名类型的错误是根据它们处理内部事务的方式修复的,但它没有涵盖后来用表类型引入的类似场景。我仍在等待确认该原始错误是否应该被关闭为已修复;我建议按照设计关闭所有四个。这部分是因为它是我期望的工作方式,部分是因为我从 UC 那里得到了一种感觉,即“修复”它以不同的方式工作非常复杂,可能会破坏向后兼容性,并且会有助于用例数量非常有限。没有什么反对你或你的用例,但在测试场景之外我'
更新 #2
我已经写了关于这个问题的博客:
http://www.sqlperformance.com/2013/11/t-sql-queries/single-tx-deadlock
| 归档时间: |
|
| 查看次数: |
11994 次 |
| 最近记录: |