sql >> Database >  >> RDS >> Sqlserver

SQL Server 2005 transactieniveau en opgeslagen procedures

De opgeslagen procedure gebruikt de transactie-isolatie die van kracht is wanneer deze wordt aangeroepen.

Als de opgeslagen procedure zelf een expliciet isolatieniveau instelt, wordt dit opnieuw ingesteld wanneer de opgeslagen procedure wordt afgesloten.

(Bewerken:zojuist gecontroleerd en dit is in tegenstelling tot wat BOL zegt "... het blijft ingesteld voor die verbinding totdat het expliciet wordt gewijzigd" maar is hieronder te zien)

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

Resultaten

ReadUncomitted
Enter: SetRCTransLevel
Readcomitted
Exit: SetRCTransLevel
ReadUncomitted



  1. Hoe wijzig ik twee verschillende kolomkoppen van een reeds bestaande databasetabel in sqlalchemy?

  2. Probleem met kopiëren en plakken in SQL Server Management Studio

  3. Hoe de locatie van een afbeelding in een SQL Server-database vast te houden?

  4. Hoe te testen in en tussen elk van de verschillende tafels?