Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

LINQ + TransactionScope SQL सर्वर प्रोफाइलर में अलगाव स्तर नहीं बदलेगा

यह इस बात पर निर्भर करता है कि आपने लेन-देन कैसे बनाया।

यदि आपने इसे शुरू करने के लिए इनलाइन SQL निष्पादित किया है (उदा. BEGIN TRAN ), L2S को लेन-देन के बारे में पता नहीं होगा और READ COMMITTED में एक नया नेस्टेड को स्पिन करेगा .

हालाँकि, यदि आपने System.Transaction का उपयोग किया है, या आपके DataContext . पर कोई लेन-देन सेट है , सबमिट चेंज उस लेनदेन में भाग लेंगे।

यदि आप TM: Begin Tran . चुनते हैं, तो आप इन लेन-देन को Profiler में शुरू और रुकते हुए देख सकते हैं और TM: Commit Tran घटना वर्ग।

नोट:ADO.Net BEGIN TRAN जारी नहीं करता है न ही यह SET TRANSACTION ISOLATION जारी करता है बैचों में, यह निचले स्तर पर किया जाता है।

यदि आप वास्तव में व्यवहार की पुष्टि करना चाहते हैं, एक तालिका पर एक ट्रिगर बनाएं जो वर्तमान अलगाव स्तर को लॉगिंग तालिका में सम्मिलित करता है और उस पर जांच करता है।

आप दौड़ कर अपना वर्तमान अलगाव स्तर उठा सकते हैं:

SELECT CASE transaction_isolation_level 
WHEN 0 THEN 'Unspecified' 
WHEN 1 THEN 'Read Uncommitted' 
WHEN 2 THEN 'Read Committed' 
WHEN 3 THEN 'Repeatable Read' 
WHEN 4 THEN 'Serializable' 
WHEN 5 THEN 'Snapshot' END AS TRANSACTION_ISOLATION_LEVEL 
FROM sys.dm_exec_sessions 
where session_id = @@SPID


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. संग्रहित प्रक्रिया में बहु-मान दिनांक पैरामीटर?

  2. SQL क्वेरी चलाने के लिए Excel VBA का उपयोग करना

  3. पंक्ति से पंक्ति के बजाय क्वेरी परिणाम कॉलमर (विभिन्न कॉलम में) कैसे दिखाएं?

  4. क्या SQL सर्वर रैप का चयन करता है... एक अंतर्निहित लेनदेन में क्वेरी सम्मिलित करें?

  5. कई इंडेक्स वाली टेबल के लिए स्लो बल्क इंसर्ट