मैं तालिका (पंक्तियों) का उपयोग करके तालिका की एक पंक्ति अपडेट करता हूं, लेकिन "sp_lock" को निष्पादित करके मैं देख सकता हूं कि पूरी तालिका है बंद कर दिया। इसलिए, लेनदेन करने से पहले, अन्य लेन-देन तालिका की अन्य पंक्तियों को अपडेट नहीं कर सकते हैं। क्यों "के साथ (ROWLOCK)" प्रभावी नहीं होता है?"तालिका (रोलॉक)" के साथ पूरी तालिका लॉक हो जाती है, जबकि अपडेट स्टेटमेंट
मैं नीचे क्वेरी चप्पू-आंकड़ा के साथ उपयोग कर रहा हूँ: एक ही समय में किसी भी अन्य लेन-देन से एक ही तालिका में अंतर पंक्ति के लिए एक ही हटाने आपरेशन चल रहा
DELETE FROM DefDatabaseSession WITH (ROWLOCK) WHERE ProcessName='test';
मैं अपवाद
[हो रही है एसक्यूएलसेवर जेडीबीसी चालक] [एसक्यूएल सर्वर] लॉक अनुरोध समय अवधि समाप्त हो गया .; नेस्टेड अपवाद java.sql.SQLException है: [newscale] [SQLServer जेडीबीसी चालक] [SQLServer] लॉक अनुरोध समय अवधि समाप्त हो गई है .: com.newscale.bfw.udkernel.kernel.UdKernelException: udconfig.defdbsession.delete; SQL के लिए अनुक्रमित SQLException [DefDatabaseSession से हटाएं जहां प्रक्रिया नाम =?]; एसक्यूएल राज्य [एचवाई 000]; त्रुटि कोड [1222]; [न्यूज़केल] [एसक्यूएलसेवर जेडीबीसी चालक] [एसक्यूएल सर्वर] लॉक अनुरोध समय अवधि समाप्त हो गया .; नेस्टेड अपवाद java.sql.SQLException है: [newscale] [SQLServer जेडीबीसी चालक] [एसक्यूएल सर्वर] लॉक अनुरोध समय अवधि समाप्त हो गया।
'EXPLAIN' SQL सर्वर पर मौजूद नहीं है। योजना प्राप्त करने के लिए "वास्तविक निष्पादन योजना शामिल करें" बटन का उपयोग करें। – Alejandro
मेरे पास ProcessName कॉलम के लिए एक अनुक्रमणिका है। – vani
लेकिन मुझे केवल पंक्ति लॉक की आवश्यकता है ... क्योंकि अन्य पंक्तियों को किसी अन्य थ्रेड द्वारा एक ही समय में हटा दिया जाएगा .. इसलिए मुझे केवल अपने राक्षसों को ढीला करने की ज़रूरत नहीं है .. इसलिए मैं टेबल लॉक का उपयोग नहीं कर सकता – vani