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

क्या संग्रहित प्रक्रियाएं टेबल/पंक्तियों को लॉक करती हैं?

आपको दौड़ की स्थिति मिल सकती है।

यह एक कथन में किया जा सकता है:

  • आप एक अद्यतन में असाइन कर सकते हैं
  • लॉक संकेत दूसरी प्रक्रिया को छोड़ने . की अनुमति देते हैं यह पंक्ति
  • आउटपुट क्लॉज कॉलर को डेटा लौटाता है

इसे आज़माएं... (संपादित करें:होल्डलॉक हटा दिया गया)

Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
OUTPUT INSERTED.*
SET
   AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
WHERE
   AssignedTo is null and [TsServer] = @Server   -- not needed -> and UserName = @ServerUser

यदि नहीं, तो आपको एक अलग चयन की आवश्यकता हो सकती है

Update TOP (1) ServerLoginUsers WITH (ROWLOCK, READPAST)
SET
    -- yes, assign in an update
   @ServerUser = UserName,
   -- write
   AssignedTo = @User, AssignedToDate = getdate(), SourcePool = @UserPool
OUTPUT INSERTED.*
WHERE
   AssignedTo is null and [TsServer] = @Server   -- not needed -> and UserName = @ServerUser

SELECT ...

इसे और अधिक के लिए देखें:SQL सर्वर प्रोसेस क्यू रेस कंडीशन




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक्सेल से SQL सर्वर 2008 में आयात करते समय डेटा प्रकारों को परिवर्तित करने में त्रुटि

  2. URL से रिपोर्ट जनरेट करें - SQL सर्वर रिपोर्टिंग सेवाएँ 2008

  3. SQL सर्वर 2008 - उन्नत खोज/छँटाई

  4. SQL सर्वर 2012 में विस्तारित ईवेंट में एक महत्वपूर्ण परिवर्तन

  5. SQL सर्वर ट्यूनिंग - यह सब माप के बारे में है