Sql सर्वर 2005 - टेबल पर संगामिति का प्रबंधन

वोट
1

मैं ASP.NET अनुप्रयोग इस प्रक्रिया में मिल गया है:

  • एक कनेक्शन शुरू
  • किसी लेन-देन शुरू
  • एक मेज LoadData एक स्तंभ जो किसी विशेष LoadId शामिल साथ SqlBulkCopy वर्ग के साथ मूल्यों का एक बहुत में सम्मिलित करें।
  • एक संग्रहीत प्रक्रिया है कि कॉल करें:
    • विशिष्ट LoadId के लिए तालिका LoadData पढ़ें।
    • प्रत्येक पंक्ति के लिए गणना का मतलब है जो एक अस्थायी (#temp) तालिका में तालिकाओं के दर्जनों पढ़ने और परिणाम बारे में (प्रक्रिया है कि पिछले कई मिनट) के एक बहुत है।
    • विशिष्ट LoadId के लिए LoadDate में लाइनों को हटाता है।
    • एक बार सब कुछ किया जाता है, परिणाम तालिका में परिणाम लिखें।
  • लेन-देन के लिए प्रतिबद्ध या रोलबैक अगर कुछ विफल रहता है।

मेरी समस्या है कि अगर मैं 2 उपयोगकर्ताओं है कि इस प्रक्रिया को शुरू किया है, दूसरा एक प्रतीक्षा करने के लिए है कि पिछले समाप्त हो गया है (क्योंकि डालने की मेज पर एक विशेष ताला लगाना लगता है) और अपने आवेदन कभी कभी टाइमआउट में गिर जाता है होगा (और उपयोगकर्ताओं प्रतीक्षा करने के लिए :)) खुश नहीं हैं।

परिणाम लेखन: मैं एक तरह से, उन है कि वहाँ के रूप में कोई बातचीत है समानांतर में सब कुछ करता है के लिए पिछले एक को छोड़कर सक्षम होने के लिए की तलाश में हूँ। मुझे लगता है कि मुझे क्या ब्लॉक कर रहा है आवेषण है / LoadData तालिका में हटा देता है। मैं अन्य लेनदेन अलगाव के स्तर की जाँच की है, लेकिन यह कुछ भी नहीं है मेरी मदद कर सकता है कि लगता है।

क्या LoadData मेज पर विशेष दूर करने के लिए सक्षम होने के लिए होगा उचित होगा जब सम्मिलित समाप्त हो गया है, लेकिन लेन-देन समाप्त होने के बिना (यह संभव ही पंक्तियों और न तालिका? लॉक करने के लिए SqlServer मजबूर करने के लिए है)।

कोई उपाय?

09/12/2008 को 14:38
का स्रोत उपयोगकर्ता
अन्य भाषाओं में...                            


3 जवाब

वोट
1

यदि आप सुनिश्चित अंतिम भाग को छोड़कर cioncurrent संचालन के साथ कोई समस्या नहीं है कि वहाँ हो, क्यों सिर्फ उन आखिरी बयान, जो भी वे कर रहे हैं कि डीओ अलगाव की आवश्यकता होती है) से पहले लेन-देन शुरू नहीं, और तुरंत प्रतिबद्ध वे सफल होने के बाद .. फिर अग्रिम पढ़ने के संचालन के लिए एक दूसरे को ब्लॉक नहीं होगा ...

09/12/2008 को 15:24
का स्रोत उपयोगकर्ता

वोट
1

पुस्तकें ऑनलाइन में सेट लेनदेन अलगाव स्तर पढ़ें कमिट स्नैपशॉट देखें।

09/12/2008 को 15:04
का स्रोत उपयोगकर्ता

वोट
1

लेन-देन एसक्यूएल / कोड के छोटे और तेजी से क्रियान्वित करने टुकड़े को शामिल करना चाहिए। वे प्रवृत्ति विभिन्न प्लेटफार्मों पर अलग ढंग से लागू किया जाना है। वे टेबल लॉक हो जाएगा और के रूप में संशोधन इस प्रकार की क्वेरी या एक ही पंक्ति / पेज / तालिका को अद्यतन करने से अन्य उपयोगकर्ताओं के बाहर ताला लगा बढ़ने तो ताला विस्तार।

लेन-देन क्यों नहीं भूल जाते हैं, और किसी अन्य तरीके से संसाधन त्रुटियों को संभाल? अपने डेटा अखंडता वास्तव में लेनदेन के द्वारा सुरक्षित किया जा रहा है, या आप इसे बिना कर सकते हैं?

09/12/2008 को 14:43
का स्रोत उपयोगकर्ता

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more