SQL Server 故障转移期间的暂时性错误

本文关键字:暂时性 错误 Server 故障 转移 SQL | 更新日期: 2024-11-06 09:36:56

我们有一个客户端应用程序通过 C# dll 访问 SQL Server 数据库(镜像和群集),其中包含特定错误号的重试逻辑。

我们在故障转移期间遇到问题,.dll在重试逻辑中捕获这些错误将允许客户端应用程序在故障转移后优雅地继续。

以下是我们当前在重试逻辑中捕获的错误列表:

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

有谁知道数据库在故障转移期间可能引发的更全面的错误列表,一旦故障转移完成就可以恢复?

他们一定是必须处理这些软件的负载,但我似乎找不到一个像样的列表。

谢谢,克里斯。

SQL Server 故障转移期间的暂时性错误

由于明显缺乏通用列表,我们已经走上了重试所有使连接处于断开状态的错误的道路。

我认为这里的这些家伙也有类似的问题,可能想检查一下。

是否有所有 SQL Server 2012 错误代码的概述?

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

结束捕获