изменить хранимую процедуру, чтобы использовать уровень изоляции снимка - PullRequest
0 голосов
/ 27 марта 2012

Быстрый вопрос У меня есть база данных с включенным моментальным снимком, используя

ALTER DATABASE myDB
SET ALLOW_SNAPSHOT_ISOLATION ON

Я пытаюсь изменить существующую хранимую процедуру, чтобы использовать уровень изоляции транзакции для чтения незафиксированных данных, используя следующее:

USE [myDB]
GO
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
GO
/****** Object:  StoredProcedure [dbo].[myStoredProcedure]    Script Date: 03/27/2012 11:39:24 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[myStoredProcedure]

AS
BEGIN
    SELECT *
    FROM someTable
END

RETURN 0

Но когда я снова открываю хранимую процедуру, оператор SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED исчезает.

USE [myDB]
GO
/****** Object:  StoredProcedure [dbo].[myStoredProcedure]    Script Date: 03/27/2012 11:39:24 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[myStoredProcedure]

AS
BEGIN
    SELECT *
    FROM someTable
END

RETURN 0

Был ли фактически установлен уровень транзакции?Я ожидал, что оператор все еще будет там после закрытия и повторного открытия окна хранимой процедуры.Просто хотел проверить, спасибо.

1 Ответ

1 голос
/ 27 марта 2012

Вы должны поместить его в тело процедуры.Если он находится за пределами, вы просто изменяете его на этом уровне изоляции, а не изменяете определение процедуры для его использования.

USE [myDB]
GO
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
ALTER PROCEDURE [dbo].[myStoredProcedure]

AS
BEGIN
    SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

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