我有一个用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