Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL Server 2008 में लंबे डायनेमिक sql को डिबग करना

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

Declare debug bit
set debug = 1

...
if debug = 1 Begin     Print @SQL End
Else 
Begin Exec (@sql) End

वैकल्पिक रूप से

mydynamiccode_logging नामक एक तालिका बनाएं (एक sql कॉलम के साथ अधिकतम sql स्टेटमेंट के समान लंबाई, एक रनडेट कॉलम और जो भी अन्य कॉलम आपको आवश्यक लग सकते हैं (मैं sql स्टेटमेंट, उपयोगकर्ता, एप्लिकेशन को बनाने के लिए उपयोग किए जाने वाले इनपुट चर पर विचार करूंगा) यदि एक से अधिक लोग इस कोड का उपयोग करते हैं)

निष्पादन स्टेटमेंट चलाने से पहले कुछ इस तरह चलाएं:

insert mydynamiccode_logging (sql, rundate)
values (@sql, getdate()) 

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में विदेशी कुंजी निर्भरता कैसे खोजें?

  2. SQL सर्वर में त्रुटि "डेटिफ़ फ़ंक्शन के परिणामस्वरूप अतिप्रवाह" को कैसे ठीक करें?

  3. ओलेड कनेक्शन अपवाद

  4. क्या SQL सर्वर में पंक्ति स्तर लॉकिंग को बाध्य करना संभव है?

  5. SQL सर्वर, प्राथमिक कुंजी फ़ील्ड में अशक्त नहीं डाल सकता है?