Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Mức giao dịch SQL Server 2005 và các thủ tục được lưu trữ

Thủ tục được lưu trữ sẽ sử dụng cách ly giao dịch có hiệu lực khi được gọi.

Nếu bản thân thủ tục được lưu trữ đặt một mức cách ly rõ ràng, điều này sẽ được đặt lại khi thủ tục được lưu trữ thoát.

(Chỉnh sửa:Vừa được kiểm tra và điều này trái với những gì BOL nói "... nó vẫn được đặt cho kết nối đó cho đến khi nó được thay đổi rõ ràng" nhưng có thể được nhìn thấy từ bên dưới)

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

Kết quả

ReadUncomitted
Enter: SetRCTransLevel
Readcomitted
Exit: SetRCTransLevel
ReadUncomitted



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dbo chính của SQL Server không tồn tại,

  2. Làm cách nào để tôi có thể truy vấn một giá trị trong một cột XML trong SQL Server 2008

  3. Làm cách nào để kiểm soát việc dò tìm tham số và / hoặc gợi ý truy vấn trong khung thực thể?

  4. Tạo câu lệnh INSERT từ bảng SQL Server

  5. Gọi hàm C / C ++ DLL không được quản lý từ SQL Server 2008