2008-09-21 10 views
7

वहाँ एक सौदे शुरू किए बिना एसक्यूएल 2005-2008 डेटाबेस में एक पंक्ति लॉक करने का तरीका तो अन्य प्रक्रियाओं पंक्ति उसे अनलॉक जब तक अद्यतन नहीं कर सकते है?लॉकिंग पंक्ति 2005-2008

उत्तर

3

आप RowLock or other hints उपयोग कर सकते हैं, लेकिन आप careful होना चाहिए ..

HOLDLOCK संकेत एसक्यूएल सर्वर हिदायत ताला धारण करने के लिए जब तक आप लेन-देन के लिए प्रतिबद्ध होगा। रॉकॉक संकेत केवल इस रिकॉर्ड को लॉक करेगा और पेज या टेबल लॉक जारी नहीं करेगा।

यदि आप अपना कनेक्शन बंद करते हैं या समय निकालते हैं तो लॉक भी जारी किया जाएगा। मैं ऐसा करने से बहुत सावधान रहूंगा क्योंकि यह किसी भी चयन कथन को रोक देगा जो इस पंक्ति को अपने ट्रैक में मृत कर देगा। SQL सर्वर में कई लॉकिंग संकेत हैं जिनका आप उपयोग कर सकते हैं। जब आप या तो होल्डॉक या रोउलॉक पर खोज करते हैं तो आप उन्हें पुस्तकें ऑनलाइन देख सकते हैं।

+0

मैंने यह कोशिश की है, लेकिन यह वही नहीं है जो मैं चाहता हूं। जब मैं अद्यतन करता हूं तो यह वास्तव में लॉक रखता है। अपडेट लॉक होने तक प्रतीक्षा करता है और इसके बाद यह रिकॉर्ड अपडेट करता है (यह वही नहीं है जो मैं चाहता हूं)। दूसरा, मैं अभी भी किसी भी समस्या के बिना एक चयन कर सकते हैं। – Martijn

1

सर्वर में जो भी आप निष्पादित करते हैं, वह लेनदेन में होता है, या तो निहित या स्पष्ट।

आप किसी भी लेन-देन के साथ केवल एक पंक्ति को लॉक नहीं कर सकते हैं (पंक्ति को केवल पढ़ने के लिए)। आप डेटाबेस को केवल पढ़ सकते हैं, लेकिन केवल एक पंक्ति नहीं।

अपना उद्देश्य समझाएं और यह एक बेहतर समाधान हो सकता है। अलगाव स्तर और ताला संकेत और row versioning

0

क्या आपको पंक्ति लॉक करने की आवश्यकता है, या Sql Server's Application locks आपको क्या चाहिए?

एक अनुप्रयोग ताले एक नाम है कि आप "ताला" कर सकते हैं "अनलॉक" और देखें कि क्या यह लॉक किया गया है के साथ सिर्फ एक ताला है। विवरण के लिए उपरोक्त लिंक देखें। (यदि आपका कनेक्शन बंद हो जाता है तो वे अनलॉक हो जाते हैं, इसलिए स्वयं को साफ करने के लिए प्रवृत्त होते हैं)

+0

मैं एप्लिकेशन लॉक का उपयोग नहीं कर सकता क्योंकि 'लॉक' पंक्ति तक पहुंचने वाले अन्य एप्लिकेशन यह नहीं जानते कि उन्हें पहले एप्लिकेशन लॉक की जांच करने की आवश्यकता है। – alex

संबंधित मुद्दे