हमारे पास एक बड़ा एप्लीकेशन मुख्य रूप से SQL Server 7.0 में लिखा गया है, जहां सभी डेटाबेस कॉल संग्रहीत प्रक्रियाओं के लिए हैं। अब हम SQL Server 2005 चला रहे हैं, जो अधिक टी-एसक्यूएल सुविधाएं प्रदान करता है।एसक्यूएल सर्वर टी-एसक्यूएल त्रुटि हैंडलिंग का सबसे अच्छा अभ्यास उपयोग क्या है?
बस हर चयन, INSERT, अद्यतन, और हटाएं, @@ ROWCOUNT और @@ ERROR स्थानीय चर में कब्जा कर लिया गया है और समस्याओं के लिए मूल्यांकन किया गया है।
- त्रुटि संदेश उत्पादन पैरामीटर सेट कर दिया जाता
- रोलबैक (यदि आवश्यक हो) किया जाता है
- जानकारी लिखा है (सम्मिलित करें) तालिका लॉग इन करने के
- एक साथ वापसी: यदि कोई समस्या निम्नलिखित किया जाता है त्रुटि संख्या, इस प्रक्रिया के लिए अद्वितीय
वे सभी पंक्तियों की जांच नहीं करते (केवल जब यह जाना जाता है) (सकारात्मक यदि घातक, नकारात्मक चेतावनी है) और कुछ कम या ज्यादा लॉग/डिबग जानकारी के साथ भिन्न होते हैं। साथ ही, पंक्ति तर्क कुछ समय तर्क त्रुटि से विभाजित होता है (उन अद्यतनों पर जहां WHERE खंड में एक समवर्ती क्षेत्र की जांच की जाती है, पंक्ति = 0 का अर्थ है कि किसी और ने डेटा अपडेट किया है)।
SELECT, INSERT, UPDATE, or DELETE
SELECT @[email protected]@ERROR, @[email protected]@ROWCOUNT
IF @Rows!=1 OR @Error!=0
BEGIN
SET @ErrorMsg='ERROR 20, ' + ISNULL(OBJECT_NAME(@@PROCID), 'unknown')
+ ' - unable to ???????? the ????.'
IF @@TRANCOUNT >0
BEGIN
ROLLBACK
END
SET @LogInfo=ISNULL(@LogInfo,'')+'; '+ISNULL(@ErrorMsg,'')+
+ ' @YYYYY=' +dbo.FormatString(@YYYYY)
+', @XXXXX=' +dbo.FormatString(@XXXXX)
+', Error=' +dbo.FormatString(@Error)
+', Rows=' +dbo.FormatString(@Rows)
INSERT INTO MyLogTable (...,Message) VALUES (....,@LogInfo)
RETURN 20
END
मैं की जगह हम कैसे TRY-पकड़ने T-SQL के साथ ऐसा कर रहा हूँ में: हालांकि, यहां एक काफी सामान्य उदाहरण है। मैंने TRY...CATCH (Transact-SQL) वाक्यविन्यास के बारे में पढ़ा है, इसलिए बस इसके कुछ सारांश पोस्ट न करें। मैं किसी भी अच्छे विचारों की तलाश में हूं और सर्वोत्तम हमारी त्रुटि हैंडलिंग विधियों को करने या सुधारने के लिए। इसे टी-एसक्यूएल त्रुटि प्रबंधन के किसी भी अच्छे या सर्वोत्तम अभ्यास के उपयोग की कोशिश करने की ज़रूरत नहीं है।
मुझे लगता है कि यह SQL सर्वर 2005 सामग्री पर छोड़ देता है, लेकिन वैसे भी उत्कृष्ट है। और बाकी की अपनी साइट भी। – gbn
SQL सर्वर 2005+ के लिए यहां प्रारंभ करें http://www.sommarskog.se/error_handling/Part1.html –