Den lagrade proceduren kommer att använda den transaktionsisolering som gäller när den anropas.
Om den lagrade proceduren själv ställer in en explicit isoleringsnivå kommer denna att återställas när den lagrade proceduren avslutas.
(Edit:Kontrollerade precis och det här är i motsats till vad BOL säger "... den förblir inställd för den anslutningen tills den explicit ändras" men kan ses nedan)
CREATE PROC CheckTransLevel
AS
DECLARE @Result varchar(20)
SELECT @Result = CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncomitted'
WHEN 2 THEN 'Readcomitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot'
END
FROM sys.dm_exec_sessions
WHERE session_id = @@SPID
PRINT @Result
GO
CREATE PROC SetRCTransLevel
AS
PRINT 'Enter: SetRCTransLevel'
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
EXEC CheckTransLevel
PRINT 'Exit: SetRCTransLevel'
GO
SET NOCOUNT ON
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
EXEC CheckTransLevel
EXEC SetRCTransLevel
EXEC CheckTransLevel
Resultat
ReadUncomitted
Enter: SetRCTransLevel
Readcomitted
Exit: SetRCTransLevel
ReadUncomitted