SQL Server 2005关键死锁

时间:2008-12-05 22:22:39

标签: sql sql-server

我在uniqueidentifier列上有一个包含聚簇主键索引的表。我有一个运行以下psuedo函数的过程:

begin transaction
read from table 1
insert into table 2
update table 1 with pointer to table 2 record
commit transaction

这一切都正常,直到从其他地方同时执行相同的程序。一旦发生这种情况,其中一个执行会在主键上每次都被解锁并终止。

任何想法我能做些什么来防止这种情况,只是简单地说“不要同时运行”?事务当前在READ COMMITTED隔离级别中运行。

2 个答案:

答案 0 :(得分:2)

  1. 在eulerfx.myopenid.com提示时提高事务隔离级别。

  2. 使用sql“mutexes”简单地等待一个程序完成,然后让另一个程序运行。 http://weblogs.sqlteam.com/mladenp/archive/2008/01/08/Application-Locks-or-Mutexes-in-SQL-Server-2005.aspx

  3. 使用快照隔离级别。依赖你的应用程序可以做什么。然而,这会带来其他问题。 http://msdn.microsoft.com/en-us/library/ms189050.aspx

  4. 数字2需要更多的代码更改而不是1。但有时你不能只提高隔离级别。

答案 1 :(得分:1)