Monday, 15 March 2010

sql server - "SqlException: String or binary data would be truncated." - Is there an EASY way to debug this? -


इस त्रुटि का उत्पादन करने वाली एक संग्रहीत कार्यविधि को निष्पादित करते समय, यह कह सकता है कि त्रुटि लगभग 42 है। लेकिन त्रुटि कहीं नहीं है 42 के पास। कभी-कभी इसमें शामिल होने में, कभी-कभी यह फ़ंक्शन में होती है, कभी-कभी एक सबक्विरी ... लेकिन पंक्ति 42 कहीं भी या कहीं भी त्रुटि से संबंधित नहीं होती है।

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

क्या इस बात को डिबग करने का एक आसान तरीका है कि मुझे याद आ रहा है?

आपको अपनी तालिका में अपने मूल्यों को सम्मिलित करने से पहले अपने संग्रहीत कार्यविधि में कोड जोड़ना चाहिए, यदि आवश्यक हो । - नीचे दिए गए उदाहरण देखें।

कोड स्निपेट

  - यह बैच SQL सर्वर त्रुटि संदेश DECLARE @MyTable Table (MyID INT Identity (1, 1) के साथ विफल हो जाएगा , MyValue VARCHAR (10)) DECLARE @MyParameter VARCHAR (100) - लंबाई में 52 अक्षर की एक स्ट्रिंग बनाएं @MyParameter = REPLICATE ('Z', 52) @MyTable (MyValue) मूल्यों में INSERT (@MyParameter)   

GO

  - यह बैच कस्टम त्रुटि संदेश DECLARE @MyTable Table (MyID INT Identity (1, 1), MyValue VARCHAR (10) के साथ विफल हो जाएगा ) DECLARE @MyParameter VARCHAR (100) - लंबाई में 52 अक्षरों की एक स्ट्रिंग बनाएं SET @MyParameter = REPLICATE ('Z', 52) IF LEN (@MyParameter) & gt; 10 BEGIN RAISERROR ('आपने MyTable.MyValue में बहुत अधिक वर्ण सम्मिलित करने का प्रयास किया है।', 16, 1) रिटर्न एन्ड या तो माइटेबल (माइवल्यूव) मूल्यों (@ माइपार्मेटर) में प्रवेश करें   < / div> 

No comments:

Post a Comment