sql >> Databasteknik >  >> RDS >> Sqlserver

SQL Server 2005 Transaktionsnivå och lagrade procedurer

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



  1. Hur ställer jag in en kollation med mysqli?

  2. Postgres LIKE '...%' använder inte index

  3. hämta en byte-array från en LONG RAW från oracle db

  4. Jag verkar inte komma på hur jag ska uppdatera min senaste inloggningstid