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

SQL सर्वर में संग्रहीत कार्यविधि के प्रारंभ में अद्यतन तालिका लॉक प्राप्त करें

आपने कहा:

आपको बस TXN की अवधि के लिए एक साझा रीड लॉक की आवश्यकता है। इसका अर्थ यह है कि किसी अन्य प्रक्रिया को TABLOCK के साथ "राइट" लॉक नहीं मिल सकता है। और आपको COUNT की भी आवश्यकता नहीं है।

...
   BEGIN TRANSANCTION
     SELECT TOP 1 KeyCol FROM TheTable WITH (TABLOCK, HOLDLOCK)
...

आपको क्यों लगता है कि आप एक अद्यतन लॉक चाहते हैं?

होल्डलॉक या सीरियल

टिप्पणी के बाद संपादित करें:

  • "अनन्य लॉक" का अर्थ है "डेटा का उपयोग करने वाली केवल एक प्रक्रिया"।
  • "SERIALIZABLE" का मूल रूप से अर्थ है ताले (साझा, अनन्य, जो कुछ भी) को अधिक समय तक पकड़ना।

आप "अनन्य लॉक" निर्दिष्ट नहीं कर सकते और अन्य प्रक्रियाओं को पढ़ने की अनुमति दें। अवधारणाएं परस्पर अनन्य हैं। आप संपूर्ण तालिका में लेखन को रोकना चाहते हैं, जो एक जारी . है साझा/रीड लॉक करेगा। यहीं पर सीरियल आता है।

"लॉक मोड्स" से

इसलिए:एक साझा लॉक लिखने की अनुमति नहीं देता है और इसे SERIALIZABLE बनाकर जारी रखा जा सकता है



  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. SqlCommand का पुन:उपयोग करना?

  3. एकाधिक तालिकाओं का नाम बदलना

  4. nvarchar (यूनिकोड) कॉलम के लिए COLLATIONS का क्या मतलब है?

  5. गेटडेट का आउटपुट बदलना