2011-12-29 15 views
0

これらのテーブルにレコードを挿入/更新するために、それぞれ3つのテーブルと3つのストアドプロシージャがあります。最初のテーブルには、自動生成された主キー列RecNoがあります。ストアドプロシージャのシリアライズ可能な分離レベルを設定する

約1000人のユーザーが、異なる地理的ロケーションから同時にこれらのテーブルにレコードを入力しています。挿入が正常に完了し、警告が生成されなかった場合でも、2番目または3番目の表の挿入が欠落することがあることに気づいています。

自動生成された主キー列が同時に発生する問題をどのように処理するかを知りたい。ストアドプロシージャの上に分離レベルを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

あなたの質問には複数の挿入が記載されていますが、コードには1つの更新のみが表示されます.... – RickNZ

答えて

0

、 ID列は、同時挿入に適しています。

あなたがテーブルに添付なしの任意のトリガーが持つ

場合 - あなたはINSERTSに気づいた後、すべての詳細

を示さないが、

- 私はここにそれらのいずれかが表示されません

+0

私は部分コードを提出しました。並行環境でエントリが見つからない理由 – RKh

+0

あなたの自動生成された列 - それはIDENTITY、NEWID()、NEWSEQUENTIALID()なのかカスタムですか? –

+0

IDです。 – RKh

関連する問題