में किसी लेनदेन के बाहर आवेषण और अपडेट निष्पादित करने के लिए कैसे करें मैंने SQL सर्वर टी-एसक्यूएल में प्रक्रियाएं संग्रहीत की हैं जिन्हें लेनदेन के दायरे में .NET से बुलाया जाता है।टी-एसक्यूएल
मेरी संग्रहीत प्रक्रिया के भीतर, मैं कुछ ऑडिटिंग टेबल पर कुछ लॉगिंग कर रहा हूं। मैं ऑडिटिंग टेबल में एक पंक्ति डालता हूं, और बाद में लेनदेन में इसे अपडेट के माध्यम से अधिक जानकारी के साथ भर देता हूं।
मुझे जो मिल रहा है, यह है कि यदि कुछ लोग एक ही चीज़ को एक साथ करने की कोशिश करते हैं, तो उनमें से 1 या 2 लेनदेन डेडलॉक पीड़ित बन जाएंगे। फिलहाल मैं मान रहा हूं कि जब मैं ऑडिटिंग टेबल में डाल रहा हूं तो कुछ प्रकार की लॉकिंग हो रही है।
मैं लेनदेन के बाहर ऑडिटिंग टेबल पर आवेषण और अपडेट निष्पादित करना चाहता हूं, ताकि लेन-देन वापस आ जाए, भले ही ऑडिटिंग हो। मैं उम्मीद कर रहा था कि यह किसी भी ताले को रोक सकता है, जिससे एक से अधिक व्यक्ति प्रक्रिया को एक बार में निष्पादित कर सकते हैं।
क्या कोई मुझे टी-एसक्यूएल में ऐसा करने में मदद कर सकता है?
धन्यवाद, रिच
Update- मैं के बाद से पाया है कि लेखा परीक्षा लेनदेन गतिरोध से संबंधित नहीं था, एसक्यूएल प्रोफाइलर का उपयोग करने का जोश के सुझाव के लिए धन्यवाद गतिरोध के स्रोत को ट्रैक करने की।
क्या आप ऑडिट तालिका में अपनी मुख्य 'हॉट' टेबल पर विदेशी कुंजी रखते हैं? –
की तरह- अगर मैं एक नई पंक्ति डाल रहा हूं, तो मैं एक 'सम्मिलित' ऑडिट रिकॉर्ड बना देता हूं। फिर मैं ऑडिट तालिका से कुंजी सहित नई पंक्ति तैयार करता हूं यह दिखाने के लिए कि किस ऑडिट की गई कार्रवाई ने पंक्ति बनाई है। फिर मैं जो दिखाया गया था उसे दिखाने के लिए, नई पंक्ति की आईडी के साथ ऑडिट रिकॉर्ड अपडेट करता हूं। हालांकि कोई संबंध नहीं है। – Rich
ठीक है मैं बस googled: एसक्यूएल लेनदेन दबाओ, और यह सवाल तीसरा लिंक सोचा था कि मजाकिया – JoshBerke