0

可能重复:
SQL 中的互斥锁模拟?

我们有一个大型 ASP.NET Web 服务,它依赖于大量使用 SQL Server 2008 数据库。最近我开始在日志中看到以下消息:

错误 1205:事务(进程 ID)在资源上与另一个进程死锁,并已被选为死锁牺牲品。重新运行事务。

我非常了解多线程编程并且了解什么是死锁。在多线程 C++ 或 C# 代码中,我会使用mutexorcritical section来隔离代码的互斥部分以防止死锁。

所以我想知道 SQL Server 是否具有相同的互斥机制?

为了澄清,我有很多复杂的陈述,比如:

BEGIN TRANSACTION
'doing other SQL selects, updates, etc.
COMMIT

所以我要找的是这个:

'ENTER CRITICAL SECTION
BEGIN TRANSACTION
'doing other SQL selects, updates, etc.
COMMIT
'LEAVE CRITICAL SECTION

通过这种方法,我正在寻找一种简单的解决方案,它不涉及对经过测试和验证的 SQL 逻辑进行大量重写。

4

0 回答 0