मैं एक काफी बड़ी परियोजना पर कुछ रखरखाव प्रोग्रामिंग कर रहा हूं, जिसे अब कंपनी छोड़ दिया गया है ..."अमान्य ऑब्जेक्ट नाम: dbo.etc" त्रुटि का रूट कारण?
मैंने अभी कंपनी के डेटाबेस में से एक का बैक अप लिया है, और उसके बाद इसे फिर से परीक्षण सर्वर। ऐसा लगता है कि ठीक काम कर रहा है।
मैं प्रोग्राम की सामान्य लॉगिन प्रक्रिया के माध्यम से जाता हूं, और वह हिस्सा भी काम करता प्रतीत होता है।
हालांकि, एक बार जब मैं प्रोग्राम में एक बिंदु प्राप्त करता हूं जहां इसे संग्रहीत प्रक्रिया निष्पादित करने की आवश्यकता होती है, तो मुझे Invalid object name 'Informix.dbo.customer'
बताते हुए मुझे एक त्रुटि मिलती है।
मूल डेटाबेस पर एक ही फ़ंक्शन चलाने से ठीक काम करता है, और जिस डेटा को मैं देखने की उम्मीद करता हूं उसे वापस लौटाता है।
मुझे मिली त्रुटियों के लिए स्पष्टीकरण स्कीमा को संदर्भित करते हैं, लेकिन यही वह जगह है जहां चीजें थोड़ा अजीब होती हैं। मूल डेटाबेस स्पष्ट रूप से में कोई स्कीमा नहीं है; अपने "सुरक्षा" फ़ोल्डर में इसमें केवल "उपयोगकर्ता" फ़ोल्डर होता है, जिसमें डब्बा होता है, और "भूमिकाएं" फ़ोल्डर होता है, जिसमें "डेटाबेस भूमिकाएं" फ़ोल्डर होता है, जिसमें सामान्य db_owner, आदि सामान होते हैं, और "रिक्त फ़ोल्डर" नामक एक खाली फ़ोल्डर होता है "।
बैक-अप-एंड-रीस्टर्ड डेटाबेस पर सुरक्षा फ़ोल्डर सभी प्रकार के बकवास से भरा है। डीबीओ के अलावा तीन उपयोगकर्ता, "स्कीमा" फ़ोल्डर, "प्रमाणपत्र" फ़ोल्डर, दो एन्क्रिप्शन कुंजी फ़ोल्डर्स ... मैं इनमें से किसी को भी हटा नहीं सकता।
एसक्यूएल लॉगिन सिस्टम की मेरी सीमित समझ से, जिस उपयोगकर्ता में मैं लॉग इन कर रहा हूं उसे यादृच्छिक बकवास के इस संग्रह से गैर-डीबीओ-अनुमतियां मिल रही हैं, और इसलिए स्वामित्व वाले डेटाबेस के हिस्सों तक पहुंच से इंकार कर दिया जा रहा है dbo।
मेरी समझ के लिए, इन Invalid object name
त्रुटियों को फेंकने वाली समस्या का मूल क्या है? और व्यावहारिक मामलों के लिए, मैं इस स्थिति को सुधारने के लिए क्या कर सकता हूं और वास्तव में प्रोग्राम मैं परीक्षण डेटाबेस पर उसी तरह से काम कर रहा हूं जैसा कि यह लाइव पर करता है?
क्या पुनर्स्थापित डेटाबेस के पास उत्पादन के समान नाम है? क्या यह संभव है कि डेटाबेस नाम को एप्लिकेशन में हार्ड कोड किया गया हो? –
क्षमा करें, उस बिंदु को बनाने के लिए और फिर भूल गया। मैंने संग्रहित प्रक्रिया का परीक्षण SQL सर्वर प्रबंधन स्टूडियो के भीतर निष्पादित संग्रहीत प्रक्रिया फ़ंक्शन का उपयोग करके किया है और संग्रहित प्रक्रिया मूल डेटाबेस पर काम करती है, न कि नए पर। डेटाबेस नाम वही है, यद्यपि। – Frosty840