स्थिति
मेरे पास एक एमएसएसक्यूएल 2008 डेटाबेस से कनेक्ट करने के लिए जेटीडीएस का उपयोग कर एक (टॉमकैट) जावा वेब एप्लिकेशन है। यह जावा एप्लिकेशन उपयोगकर्ता इनपुट का उपयोग कर 99% एमएसएसक्यूएल संग्रहीत प्रक्रियाओं को निष्पादित करता है।जेटीडीएस + संग्रहित प्रक्रियाएं + readySQL = घोंसला स्तर त्रुटि?
समस्या
jTDS चालक कभी कभी उत्तर त्रुटि के साथ (आवेदन में विभिन्न स्थानों पर):
Maximum stored procedure, function, trigger, or view nesting level exceeded (limit 32).
हम jTDS कनेक्शन स्ट्रिंग को prepareSQL=0
जोड़कर इस से बच सकते हैं। फिर त्रुटि हर जगह चली जाती है, लेकिन prepareSQL
के सभी अन्य मूल्यों के साथ, त्रुटि रहता है। मुझे नहीं पता कि जेटीडीएस के नेस्टिंग स्तर कितने संग्रहीत प्रक्रिया को जोड़ते हैं, लेकिन स्पष्ट रूप से यह हमारे आवेदन के लिए बहुत अधिक है।
प्रश्न
- केवल संग्रहित प्रक्रियाओं पर अमल करने के साथ
, जावा कोड में तैयार बयान का उपयोग कर निश्चित रूप से, कितना प्रभाव
prepareSQL=3
(याprepareSQL=0
) हमारे लिए है? दूसरे शब्दों में: हर वेबसाइट पर मुझे लगता है कि "कभी भी उत्पादन वातावरण मेंprepareSQL=0
का उपयोग न करें", यह भी इस स्थिति पर लागू होता है? यदि
prepareSQL=0
एक अनुशंसित समाधान, सुरक्षा समस्या इत्यादि नहीं है, तो हमें शायद एक और ड्राइवर की तलाश करनी चाहिए। जेटीडीएस को पिछले 2 वर्षों में अपडेट नहीं किया गया है और माइक्रोसॉफ्ट के पास जेडीबीसी 4.0 के लिए एक ड्राइवर है। मुझे जेटीडीएस और माइक्रोसॉफ्ट के जेडीबीसी 4.0 ड्राइवर के बीच कोई बेंचमार्क या तुलना नहीं मिल रही है। माइक्रोसॉफ्ट के 2.0 और 3.0 ड्राइवरों के साथ, सामान्य राय यह प्रतीत होती है कि जेटीडीएस तेज, बेहतर, अधिक कुशल है। क्या यह अभी भी जेडीबीसी 4.0 के साथ मामला है या माइक्रोसॉफ्ट ने इसके प्रतिद्वंद्वी को पास कर दिया है?
क्या आपने इस व्यवहार को कुछ विशिष्ट प्रक्रिया में इंगित करने में कामयाब रहे हैं या यह यादृच्छिक प्रतीत होता है? – heikkim
नहीं, हमने (अभी तक) नहीं किया है। हमने इस त्रुटि को एप्लिकेशन में दो अलग-अलग स्थानों पर हमारे आवेदन के दो अलग-अलग कार्यान्वयन में देखा है, लेकिन जब यह हुआ, तो यह जिद्दी था और केवल readySQL = 0 समाधान का उपयोग करके हल किया जा सकता था। – bartlaarhoven