2011-12-29 78 views
0

我有三個表和三個存儲過程分別插入/更新這些表中的記錄。第一個表格有一個主鍵列RecNo,它是自動生成的。設置存儲過程中的可序列化隔離級別

大約有1000個用戶同時從不同的地理位置在這些表中輸入記錄。我注意到,即使插入成功完成並且沒有生成警告,有時插入到第二個或第三個表中也會錯過。

我想知道自動生成的主鍵列如何處理併發問題。我是否需要在每個存儲過程的頂部將隔離級別設置爲SERIALIZABLE?

我正在使用默認隔離級別SQL Server 2008 R2 Express,即READ COMMITTED。

我的一個存儲過程是這樣的:

ALTER PROCEDURE [dbo].[pheSch_CreateOrUpdateTubewellDetails] 
    -- Add the parameters for the stored procedure here 
    @TwTaskFlag nvarchar(6), 
    @TwParameterID bigint, 
    @SerialNumber bigint, 
    @TotalNum int, 
    @TwType nvarchar(50), 
    @Depth nvarchar(60), 
    @Diameter nvarchar(60), 
    @WaterCapacity nvarchar(60), 
    @PS nvarchar(15), 
    @PSNum int, 
    @PSType nvarchar(60), 
    @Remarks nvarchar(80) 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    -- interfering with SELECT statements. 
    SET NOCOUNT ON; 

    -- Insert statements for procedure here 
     BEGIN 
      UPDATE tw_details 
       SET 
        TotalNum = @TotalNum, 
        TwType = @TwType, 
        Depth = @Depth, 
        Diameter = @Diameter, 
        WaterCapacity = @WaterCapacity, 
        PS = @PS, 
        PSNum = @PSNum, 
        PSType = @PSType, 
        Remarks = @Remarks 
       WHERE twpid = @TwParameterID; 
     END 
END 
+1

你的問題提到多個插入,但代碼只顯示一個更新.... – RickNZ 2011-12-29 14:56:03

回答

0

你不用更改隔離級別, 標識列非常適合並行插入。

IF

你沒有連接到表中的任何觸發器 - 然後告訴所有的細節

你注意到了插件 - 我沒有看到任何人在這裏

+0

我提交了部分代碼。爲什麼在併發環境中缺少條目。 – RKh 2011-12-29 09:16:08

+0

您的自動生成列 - 它是一個IDENTITY,NEWID(),NEWSEQUENTIALID()或某些自定義? – 2011-12-29 09:21:15

+0

它是身份。 – RKh 2011-12-29 09:22:59

相關問題