Làm thế nào để bạn tìm thấy mức độ giao dịch của cơ sở dữ liệu hiện tại trên SQL Server?Cách tìm mức giao dịch hiện tại?
Trả lời
Run này:
SELECT CASE transaction_isolation_level
WHEN 0 THEN 'Unspecified'
WHEN 1 THEN 'ReadUncommitted'
WHEN 2 THEN 'ReadCommitted'
WHEN 3 THEN 'Repeatable'
WHEN 4 THEN 'Serializable'
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions
where session_id = @@SPID
Nếu bạn đang nói về giao dịch hiện tại làm tổ mức, thì bạn sẽ sử dụng @@TRANCOUNT
.
Nếu bạn đang nói về giao dịch ly cấp, sử dụng DBCC USEROPTIONS
và tìm kiếm một lựa chọn cô lập mức. Nếu chưa được đặt, số đó là đã đọc cam kết.
Cũng nên nhớ DBCC USEROPTIONS là một lựa chọn tuyệt vời cho việc tìm kiếm mức độ cô lập của SESSION, nhưng nó có thể phức tạp - nếu mã của bạn thay đổi mức cô lập cho mỗi giao dịch, những khoảng thời gian mà sự cô lập mức độ khác với phiên mặc định có thể khó chụp. Ví dụ, nếu bạn mở phiên của bạn với mức cô lập x, nhưng thay đổi mức cách ly thành y trong khoảng thời gian của một giao dịch cụ thể trong phiên, thì DBCC USEROPTIONS sẽ không cho bạn khả năng hiển thị nếu được gọi bên ngoài giao dịch đó. – DCaugs
Trong SQL Server 2012 "mức cô lập" của 'DBCC USEROPTIONS' được đặt thành" đọc cam kết " –
DECLARE @UserOptions TABLE(SetOption varchar(100), Value varchar(100))
DECLARE @IsolationLevel varchar(100)
INSERT @UserOptions
EXEC('DBCC USEROPTIONS WITH NO_INFOMSGS')
SELECT @IsolationLevel = Value
FROM @UserOptions
WHERE SetOption = 'isolation level'
-- Do whatever you want with the variable here...
PRINT @IsolationLevel
Cái này không hoạt động trong SQL Azure – Ronny
+1 vì nó cũng được in 'snapshot' khi nó được sử dụng cùng với w/read commit (và không phải là cơ chế khóa mặc định) –
đây là quá mức cần thiết, chỉ cần làm DBCC USEROPTIONS như thiagoh nói – user1075613
SELECT CASE
WHEN transaction_isolation_level = 1
THEN 'READ UNCOMMITTED'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 1
THEN 'READ COMMITTED SNAPSHOT'
WHEN transaction_isolation_level = 2
AND is_read_committed_snapshot_on = 0 THEN 'READ COMMITTED'
WHEN transaction_isolation_level = 3
THEN 'REPEATABLE READ'
WHEN transaction_isolation_level = 4
THEN 'SERIALIZABLE'
WHEN transaction_isolation_level = 5
THEN 'SNAPSHOT'
ELSE NULL
END AS TRANSACTION_ISOLATION_LEVEL
FROM sys.dm_exec_sessions AS s
CROSS JOIN sys.databases AS d
WHERE session_id = @@SPID
AND d.database_id = DB_ID();
Ngoài ra, hãy xây dựng mã để mang tính giáo dục hơn. – lpapp
chỉ cần chạy DBCC useroptions
và bạn sẽ nhận được một cái gì đó như thế này:
Set Option Value
--------------------------- --------------
textsize 2147483647
language us_english
dateformat mdy
datefirst 7
lock_timeout -1
quoted_identifier SET
arithabort SET
ansi_null_dflt_on SET
ansi_warnings SET
ansi_padding SET
ansi_nulls SET
concat_null_yields_null SET
isolation level read committed
và nó chỉ ra "đọc snapshot cam kết" khi hoạt động (xem RC snapshot vs locked), ít nhất là trên SQL Server 2008 – user1075613
- 1. Mức cách ly giao dịch
- 2. Phạm vi mức cách ly giao dịch
- 3. Mức cách ly trong Giao dịch Sql
- 4. Cách tìm mức thu phóng hiện tại trong Google Map?
- 5. Đặt mức cách ly giao dịch của mysql
- 6. Cách tìm trạng thái giao dịch
- 7. Cách tìm vị trí dịch hiện tại trong Canvas?
- 8. Mức giao dịch tùy chỉnh trong Firebug DBX của Delphi
- 9. PGError: ERROR: giao dịch hiện tại bị hủy bỏ
- 10. mức cô lập giao dịch giải thích tốt
- 11. Cách chỉ định mức cách ly giao dịch mặc định trong Grails
- 12. NOLOCK so với mức cô lập giao dịch
- 13. Làm cách nào tôi có thể thay đổi mức GIAO DIỆN GIAO DỊCH GIAO DỊCH mặc định trong SQL Server 2005?
- 14. Làm cách nào để đặt mức cô lập giao dịch trong SQLAlchemy cho PostgreSQL?
- 15. giao dịch liên quan mức độ cách ly với ổ khóa trên bàn
- 16. Cách thực hiện công việc GIAO DỊCH PREPARE
- 17. Cách thực hiện cuộn SQL từ nhật ký giao dịch
- 18. Làm cách nào để bỏ đặt/đặt lại mức cô lập giao dịch cho SQL Server?
- 19. Làm cách nào để có được mức âm thanh hiện tại của thiết bị đầu ra âm thanh hiện tại?
- 20. Cách sử dụng giao dịch (bắt đầu giao dịch, giao dịch cam kết)?
- 21. Đảm bảo một loại thực hiện một giao diện tại thời gian biên dịch trong Go
- 22. Giao dịch trong giao dịch
- 23. Tại sao trình biên dịch C# chèn một giao diện thực hiện rõ ràng?
- 24. Cấp độ giao dịch và cách ly
- 25. Thông báo về mức độ cô lập được hỗ trợ bởi Sql cho các giao dịch
- 26. Làm cách nào để xác định mức thu phóng hiện tại của cửa sổ trình duyệt?
- 27. Startup-Log "Không quản lý giao dịch tìm thấy"
- 28. Hướng dẫn kỹ lưỡng về Khóa/Giao dịch/Mức cô lập trong Rails
- 29. Một số giải thích về mức độ cách ly khác nhau trong giao dịch cơ sở dữ liệu?
- 30. Làm cách nào để có được mức thu phóng hiện tại trong UIScrollView?
Điều này làm việc trong SQL Azure :-) – Ronny
Điều này không chính xác nếu mức cách ly là" read_commited_snapshot ". Trong trường hợp này, nó sẽ chỉ hiển thị "Đã đọc". – GaTechThomas
@GaTechThomas, 'READ_COMMITTED_SNAPSHOT' không phải là mức cô lập, nó là tùy chọn của cơ sở dữ liệu cho phép thay đổi hành vi của' ReadDCommitted' cấp độ cơ sở dữ liệu rộng –