2012-03-27 11 views
0

Kurze Frage Ich habe eine Datenbank mit Snapshot-aktivierter mitgespeicherte Prozedur ändern, um Snapshot-Isolationsstufe

ALTER DATABASE myDB 
SET ALLOW_SNAPSHOT_ISOLATION ON 

Ich versuche, eine vorhandene gespeicherte Prozedur zu ändern, verwendet die Transaktionsisolationsstufe lesen uncommitted Verwendung wie folgt zu verwenden :

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 

Aber wenn ich die gespeicherte Prozedur die SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED Anweisung wieder öffnen ist verschwunden.

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 

Wurde die Transaktionsebene tatsächlich festgelegt? Ich habe erwartet, dass die Anweisung nach dem Schließen und erneuten Öffnen des Stored Procedure-Fensters immer noch da ist. Ich wollte nur bestätigen, danke.

Antwort

1

Sie müssen es in den Körper der Prozedur einfügen. Wenn es außerhalb ist, ändern Sie es nur in dieser Isolationsstufe, anstatt die Prozedurdefinition zu ändern, um sie zu verwenden.

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