2016-04-22 15 views
11

Chúng tôi có ứng dụng khách truy cập cơ sở dữ liệu SQL Server (được nhân đôi và nhóm) thông qua một dll C# với thử lại logic trên các số lỗi cụ thể.Lỗi tạm thời trong khi máy chủ SQL bị lỗi

Chúng tôi đang gặp sự cố trong quá trình lỗi khi xảy ra lỗi tạm thời do .dll thực hiện khi bắt chúng trong quá trình thử lại sẽ cho phép ứng dụng khách tiếp tục thanh lịch sau khi lỗi.

Dưới đây là một danh sách các lỗi chúng tôi hiện đang bắt trong logic retry:

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

Có ai biết của một danh sách toàn diện hơn về các lỗi mà DB có thể ném trong một thất bại trên, đó là thu hồi một khi thất bại hơn là hoàn thành?

Chúng phải tải các phần mềm mà chúng phải xử lý, nhưng dường như tôi không thể tìm được danh sách phù hợp.

Cảm ơn, Chris.

+0

Tôi giả sử bạn đang sử dụng máy chủ Microsoft SQL. Trong trường hợp đó, ý nghĩa của những con số này có thể được tìm thấy [ở đây] (https://technet.microsoft.com/en-us/library/cc645603 (v = sql.105) .aspx) các số âm được liệt kê trong 1 -1000 phần. Theo mặc định trong C# bạn nhận được một ngoại lệ, những người có xu hướng chứa thêm thông tin sau đó chỉ là số lỗi. –

+0

Xin chào Nick, cảm ơn vì bình luận của bạn. Các .dll đã được viết trong nhà, do đó, các lỗi đằng sau các mã lỗi này cũng được biết đến. Mối quan tâm của tôi là chúng tôi đã bỏ lỡ một số mã lỗi. Tôi hy vọng một người nào đó có thể có danh sách đầy đủ hơn về các mã lỗi tạm thời mà chúng tôi sẽ thử lại. – ChrisMurray

+1

Xem mã lỗi MS SQL Server ví dụ tại đây: https://azure.microsoft.com/en-us/documentation/articles/sql-database-develop-error-messages/ –

Trả lời

-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 

BEGIN CATCH

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 
     ,'' 

END CATCH

+2

Chúng tôi đã có phương pháp ghi nhật ký các mã lỗi được thiết lập. Vấn đề là khi chúng ta gặp phải một vấn đề mà chúng ta không thử lại logic, nó dừng ứng dụng của máy khách, vì vậy chúng ta chỉ tìm ra những lỗi tạm thời này tại một thời điểm. – ChrisMurray

1

Tôi nghĩ rằng chàng trai này ở đây có một vấn đề tương tự, có thể muốn kiểm tra.

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

+0

Điều này không thực sự là những gì tôi đang tìm kiếm - Tôi biết rõ Microsoft có một danh sách lớn các mã lỗi, tôi tò mò là mã lỗi nào mà mọi người bắt và thử lại trong các ứng dụng của họ. –

+0

Vâng, tôi đoán điều này sẽ mang tính cá nhân đối với công ty, vì hầu hết trong số họ đều hành xử theo những sai lầm cụ thể mà họ có thể tạo ra một thử thách cho những sai lầm phổ biến mà họ có, danh sách ở đây, do bản quyền blablabla. Nhưng dù sao, tôi không nghĩ rằng đây là ý tưởng của Stack Overflow, thực sự, bởi vì sau đó nó sẽ là một quyết định dựa trên cá nhân hơn là một giải pháp. –

+1

Điều tôi thực sự tìm kiếm là một danh sách các lỗi phổ biến hợp lý. –

2

Do thiếu rõ ràng của một danh sách toàn cầu, chúng tôi đã đi xuống con đường của thử lại trên tất cả các lỗi mà rời khỏi kết nối trong tình trạng bị hỏng.

Các vấn đề liên quan