Установка Сериализуемого уровня изоляции в хранимой процедуре - PullRequest
0 голосов
/ 29 декабря 2011

У меня есть три таблицы и три хранимые процедуры соответственно для вставки / обновления записей в этих таблицах. Первая таблица имеет столбец первичного ключа 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 Ответ

0 голосов
/ 29 декабря 2011

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

IF

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

НО

вы заметили ВСТАВКИ - я не вижу здесь ни одной из них

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...