我有一个用ASP.NET设计的Web门户,我们在其中要求客户输入数据。在单击“提交”按钮后,我所做的就是读取数据并调用了存储过程,该过程将其插入表中。同时从多台计算机插入数据时,SQL Server 2005中似乎存在问题。我们在实验室中使用三台计算机进行了测试,结果是我们仅在一台计算机上成功插入了数据,而在另外两台计算机上则成功出现了页面错误。

我在存储过程中使用了事务,还尝试将隔离级别设置为READ_UNCOMMITTED,SERIALIZABLE和SNAPSHOT。似乎没有任何正常工作。从过去的一天对此感到沮丧。任何帮助,高度赞赏。

谢谢,
马诺吉

最佳答案

您可能想考虑僵局。当多个用户同时使用存储过程时,通常会发生这种情况。为了避免死锁并确保来自用户的每个查询都将成功,您将需要在更新失败期间进行一些处理,并且为此,您需要尝试捕获。这仅适用于Sql Server 2005,2008。

DECLARE @Tries tinyint

SET @Tries = 1

WHILE @Tries <= 3

BEGIN

  BEGIN TRANSACTION

  BEGIN TRY

  -- do your insert statement here

   COMMIT

   BREAK
  END TRY

  BEGIN CATCH

   SELECT ERROR_NUMBER() AS ErrorNumber, ERROR_MESSAGE() as ErrorMessage

   ROLLBACK

   SET @Tries = @Tries + 1

   CONTINUE

 END CATCH

END

08-06 18:56