2016-04-22 5 views
11

के दौरान क्षणिक त्रुटियां हमारे पास एक क्लाइंट एप्लिकेशन है जो एक SQL सर्वर डेटाबेस (प्रतिबिंबित और क्लस्टर) तक पहुंच रहा है, जिसमें सी # डीएल के माध्यम से विशिष्ट त्रुटि संख्याओं पर पुनः प्रयास तर्क होता है।SQL सर्वर विफलता

हमें असफल ओवरों के दौरान समस्याएं आ रही हैं जहां डीडी द्वारा क्षणिक त्रुटियों को फेंक दिया जा रहा है जहां उन्हें पुनः प्रयास तर्क में पकड़ने से क्लाइंट एप्लिकेशन विफल होने के बाद सुंदरता जारी रखने की अनुमति देता।

यहाँ हम वर्तमान में पुन: प्रयास करें तर्क में पकड़ने त्रुटियों की एक सूची है:

0 
-2 
-1 
2 
53 
64 
233 
596 
924 
1205 
1222 
2801 
4060 
6005 
10053 
10054 
10060 
40143 
40197 
40501 
40613 

किसी को भी जो डीबी दौरान फेंक सकता है त्रुटियों की एक अधिक व्यापक सूची एक से अधिक असफल, जो एक बार वसूली योग्य है पता है असफल हो गया है?

उनके पास उन सॉफ़्टवेयर का भार होना चाहिए जिन्हें इनसे निपटना पड़ा है, लेकिन मुझे एक सभ्य सूची नहीं मिल रही है।

धन्यवाद, क्रिस।

+0

मैं आपके माइक्रोसॉफ्ट एसक्यूएल सर्वर का उपयोग कर रहा हूं। उस स्थिति में उन संख्याओं का अर्थ पाया जा सकता है [यहां] (https://technet.microsoft.com/en-us/library/cc645603 (v = sql.105) .aspx) ऋणात्मक संख्या 1 में सूचीबद्ध हैं -1000 खंड सी # में डिफ़ॉल्ट रूप से आप एक अपवाद प्राप्त करते हैं, उनमें अधिक जानकारी होती है तो केवल त्रुटि संख्या होती है। –

+0

हाय निक, आपकी टिप्पणी के लिए धन्यवाद। .dll घर में लिखा गया था, इसलिए इन त्रुटि कोड के पीछे त्रुटियां अच्छी तरह से जानी जाती हैं। मेरी चिंता यह है कि हमने कुछ त्रुटि कोड बंद कर दिए हैं। मुझे उम्मीद है कि किसी के पास क्षणिक त्रुटि कोड की एक विस्तृत सूची हो सकती है जिसे हमें पुनः प्रयास करना चाहिए। – ChrisMurray

+1

उदाहरण के लिए एमएस एसक्यूएल सर्वर त्रुटि कोड देखें: https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-error-messages/ –

उत्तर

-2
Create PROC uspErrorLog 
( 
@userId varchar(15) , 
@ExcType varchar(255)='', 
@ExcMessage varchar(255)='', 
@ExcSource varchar(255)='', 
@ExcStackTrace varchar(255)='' 
       ,@pageUrl varchar(150)='' 
       ,@methodName varchar(150)='' 
       ,@lineNo int 
       ,@timeZone varchar(150) 
       ) 
AS 
BEGIN 
     BEGIN TRY 
     BEGIN TRANSACTION 

INSERT INTO [Common].[ErrorLogs] 
      ([userId] 
      ,[ExceptionType] 
      ,[ExceptionMessage] 
      ,[ExceptionSource] 
      ,[ExceptionStackTrace] 
      ,[pageUrl] 
      ,[MethodName] 
      ,[LineNumber] 
      ,[Timezone] 
      ,[LogDate]) 
    VALUES 
      (@userId 
      ,@ExcType 
      ,@ExcMessage 
      ,@ExcSource 
      ,@ExcStackTrace 
      ,@pageUrl 
      ,@methodName 
      ,@lineNo 
      ,@timeZone 
      ,getdate() 
      ) 
     COMMIT TRAN 
    END TRY 

    BEGIN CATCH 
     IF @@TRANCOUNT > 0 

     SELECT NULL AS ID 
      ,'Cant Perform Insert Action.Error:' + Error_message() AS Message 
      ,ERROR_LINE() AS linentto 

     ROLLBACK TRAN --RollBack in case of Error              

    END CATCH 
END 



And call this procedure in your stored procedures in {catch} by passing the variables.Like this 

पकड़ने

IF @@TRANCOUNT > 0 
     SELECT NULL AS ID 
      ,'Cant perform operation.Error:' + Error_message() AS Message 
      ,ERROR_LINE() AS linoo 

    ROLLBACK TRAN --RollBack in case of Error        

    DECLARE @methodname VARCHAR(200) 
     ,@msg VARCHAR(max) 
     ,@lineno INT 

    SET @methodname = (
      SELECT Error_procedure() 
      ) 
    SET @msg = (
      SELECT Error_message() 
      ) 
    SET @lineno = (
      SELECT Error_line() 
      ) 

    EXEC [dbo].[uspErrorLog] @CreatedBy 
     ,'' 
     ,@msg 
     ,'' 
     ,'' 
     ,'' 
     ,@methodname 
     ,@lineno 
     ,'' 

अंत पकड़ने

+2

हमारे पास पहले से सेट किए गए त्रुटि कोड लॉगिंग के तरीके हैं। समस्या यह है कि जब हम किसी ऐसे व्यक्ति से मुकाबला करते हैं जिस पर हमारे पास पुनः प्रयास नहीं किया जाता है, तो क्लाइंट एप्लिकेशन को रोक रहा है, इसलिए हम केवल इन क्षणिक त्रुटियों को एक ही समय में ढूंढ रहे हैं। – ChrisMurray

1

शुरू मुझे लगता है कि यहां इस लोग एक समान समस्या थी, जांच करना चाह सकते।

Is there an overview of all SQL Server 2012 error codes?

+0

यह वास्तव में वही नहीं है जो मैं ढूंढ रहा हूं - मुझे अच्छी तरह से पता है कि माइक्रोसॉफ्ट में त्रुटि कोड की एक बड़ी सूची है, मैं उत्सुक हूं कि लोग किस त्रुटि कोड को पकड़ते हैं और अपने अनुप्रयोगों में पुनः प्रयास करते हैं। –

+0

खैर, मुझे लगता है कि यह कंपनी के रूप में व्यक्तिगत होगा, क्योंकि उनमें से अधिकतर विशिष्ट गलतियों पर व्यवहार करते हैं, वे सिर्फ अपनी सामान्य गलतियों के लिए प्रयास कर सकते हैं, क्योंकि यह भी एक अपराध हो सकता है कॉपीराइट blablabla के कारण, यहां पर सूची। वैसे भी, मुझे नहीं लगता कि यह स्टैक ओवरफ्लो का विचार है, वास्तव में, क्योंकि यह समाधान के मुकाबले व्यक्तिगत आधारित निर्णय होगा। –

+1

जो मैं वास्तव में खोज रहा हूं वह सामान्य गलतियों की एक समझदार सूची है। –

2

एक सार्वभौमिक सूची के स्पष्ट कमी के कारण, हम सभी त्रुटियों को जो एक टूटे हुए राज्य में कनेक्शन छोड़ पर पुन: प्रयास करने के मार्ग नीचे चले गए हैं।