2011-12-29 3 views
0

У меня есть три таблицы и три хранимые процедуры соответственно для вставки/обновления записей в этих таблицах. Первая таблица содержит первичный ключ, RecNo, который автоматически генерируется.Настройка уровня изоляции Serializable в хранимой процедуре

Около 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

ответ

0

Вам не нужно изменить уровень изоляции, столбца идентификации хорошо подходит для параллельных вставок.

IF

у вас нет каких-либо триггеров, присоединенных к столу - а затем показать все детали

НО

вы заметили Вставки - я не вижу ни одного из них здесь

+0

Я отправил частичный код. Почему записи отсутствуют в параллельной среде. – RKh

+0

Ваш автогенерированный столбец - это IDENTITY, NEWID(), NEWSEQUENTIALID() или что-то обычай? –

+0

Это ИДЕНТИФИКАЦИЯ. – RKh

Смежные вопросы