Difference between revisions of "Dbo.uspLogError (procedure)"

From dbscript Online Help
Jump to: navigation, search
(New page: == wikibot == {| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse" |- | '''procedure | dbo.uspLogError |- |} <pre> -- uspLogError logs error information in the ...)
 
Line 9: Line 9:
  
 
<pre>
 
<pre>
 +
-- uspLogError logs error information in the ErrorLog table about the
 +
-- error that caused execution to jump to the CATCH block of a
 +
-- TRY...CATCH construct. This should be executed from within the scope
 +
-- of a CATCH block otherwise it will return without inserting error
 +
-- information.
 +
CREATE PROCEDURE [dbo].[uspLogError]
 +
    @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted
 +
AS                              -- by uspLogError in the ErrorLog table
 +
BEGIN
 +
    SET NOCOUNT ON;
 +
 +
    -- Output parameter value of 0 indicates that error
 +
    -- information was not logged
 +
    SET @ErrorLogID = 0;
 +
 +
    BEGIN TRY
 +
        -- Return if there is no error information to log
 +
        IF ERROR_NUMBER() IS NULL
 +
            RETURN;
 +
 +
        -- Return if inside an uncommittable transaction.
 +
        -- Data insertion/modification is not allowed when
 +
        -- a transaction is in an uncommittable state.
 +
        IF XACT_STATE() = -1
 +
        BEGIN
 +
            PRINT 'Cannot log error since the current transaction is in an uncommittable state. '
 +
                + 'Rollback the transaction before executing uspLogError in order to successfully log error information.';
 +
            RETURN;
 +
        END
 +
 +
        INSERT [dbo].[ErrorLog]
 +
            (
 +
            [UserName],
 +
            [ErrorNumber],
 +
            [ErrorSeverity],
 +
            [ErrorState],
 +
            [ErrorProcedure],
 +
            [ErrorLine],
 +
            [ErrorMessage]
 +
            )
 +
        VALUES
 +
            (
 +
            CONVERT(sysname, CURRENT_USER),
 +
            ERROR_NUMBER(),
 +
            ERROR_SEVERITY(),
 +
            ERROR_STATE(),
 +
            ERROR_PROCEDURE(),
 +
            ERROR_LINE(),
 +
            ERROR_MESSAGE()
 +
            );
 +
 +
        -- Pass back the ErrorLogID of the row inserted
 +
        SET @ErrorLogID = @@IDENTITY;
 +
    END TRY
 +
    BEGIN CATCH
 +
        PRINT 'An error occurred in stored procedure uspLogError: ';
 +
        EXECUTE [dbo].[uspPrintError];
 +
        RETURN -1;
 +
    END CATCH
 +
END;
 +
</pre>
 +
 +
== automatically generated ==
 +
 +
{| border="1" cellpadding="5" cellspacing="0" style="border-collapse:collapse"
 +
|-
 +
| '''procedure
 +
| dbo.uspLogError
 +
|-
 +
 +
| '''Description
 +
| Logs error information in the ErrorLog table about the error that caused execution to jump to the CATCH block of a TRY...CATCH construct. Should be executed from within the scope of a CATCH block otherwise it will return without inserting error information.
 +
|-
 +
 +
|}
 +
 +
<pre>
 +
 
-- uspLogError logs error information in the ErrorLog table about the  
 
-- uspLogError logs error information in the ErrorLog table about the  
 
-- error that caused execution to jump to the CATCH block of a  
 
-- error that caused execution to jump to the CATCH block of a  

Revision as of 00:27, 27 November 2009

wikibot

procedure dbo.uspLogError
-- uspLogError logs error information in the ErrorLog table about the 
-- error that caused execution to jump to the CATCH block of a 
-- TRY...CATCH construct. This should be executed from within the scope 
-- of a CATCH block otherwise it will return without inserting error 
-- information. 
CREATE PROCEDURE [dbo].[uspLogError] 
    @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted
AS                               -- by uspLogError in the ErrorLog table
BEGIN
    SET NOCOUNT ON;

    -- Output parameter value of 0 indicates that error 
    -- information was not logged
    SET @ErrorLogID = 0;

    BEGIN TRY
        -- Return if there is no error information to log
        IF ERROR_NUMBER() IS NULL
            RETURN;

        -- Return if inside an uncommittable transaction.
        -- Data insertion/modification is not allowed when 
        -- a transaction is in an uncommittable state.
        IF XACT_STATE() = -1
        BEGIN
            PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' 
                + 'Rollback the transaction before executing uspLogError in order to successfully log error information.';
            RETURN;
        END

        INSERT [dbo].[ErrorLog] 
            (
            [UserName], 
            [ErrorNumber], 
            [ErrorSeverity], 
            [ErrorState], 
            [ErrorProcedure], 
            [ErrorLine], 
            [ErrorMessage]
            ) 
        VALUES 
            (
            CONVERT(sysname, CURRENT_USER), 
            ERROR_NUMBER(),
            ERROR_SEVERITY(),
            ERROR_STATE(),
            ERROR_PROCEDURE(),
            ERROR_LINE(),
            ERROR_MESSAGE()
            );

        -- Pass back the ErrorLogID of the row inserted
        SET @ErrorLogID = @@IDENTITY;
    END TRY
    BEGIN CATCH
        PRINT 'An error occurred in stored procedure uspLogError: ';
        EXECUTE [dbo].[uspPrintError];
        RETURN -1;
    END CATCH
END;

automatically generated

procedure dbo.uspLogError
Description Logs error information in the ErrorLog table about the error that caused execution to jump to the CATCH block of a TRY...CATCH construct. Should be executed from within the scope of a CATCH block otherwise it will return without inserting error information.

-- uspLogError logs error information in the ErrorLog table about the 
-- error that caused execution to jump to the CATCH block of a 
-- TRY...CATCH construct. This should be executed from within the scope 
-- of a CATCH block otherwise it will return without inserting error 
-- information. 
CREATE PROCEDURE [dbo].[uspLogError] 
    @ErrorLogID [int] = 0 OUTPUT -- contains the ErrorLogID of the row inserted
AS                               -- by uspLogError in the ErrorLog table
BEGIN
    SET NOCOUNT ON;

    -- Output parameter value of 0 indicates that error 
    -- information was not logged
    SET @ErrorLogID = 0;

    BEGIN TRY
        -- Return if there is no error information to log
        IF ERROR_NUMBER() IS NULL
            RETURN;

        -- Return if inside an uncommittable transaction.
        -- Data insertion/modification is not allowed when 
        -- a transaction is in an uncommittable state.
        IF XACT_STATE() = -1
        BEGIN
            PRINT 'Cannot log error since the current transaction is in an uncommittable state. ' 
                + 'Rollback the transaction before executing uspLogError in order to successfully log error information.';
            RETURN;
        END

        INSERT [dbo].[ErrorLog] 
            (
            [UserName], 
            [ErrorNumber], 
            [ErrorSeverity], 
            [ErrorState], 
            [ErrorProcedure], 
            [ErrorLine], 
            [ErrorMessage]
            ) 
        VALUES 
            (
            CONVERT(sysname, CURRENT_USER), 
            ERROR_NUMBER(),
            ERROR_SEVERITY(),
            ERROR_STATE(),
            ERROR_PROCEDURE(),
            ERROR_LINE(),
            ERROR_MESSAGE()
            );

        -- Pass back the ErrorLogID of the row inserted
        SET @ErrorLogID = @@IDENTITY;
    END TRY
    BEGIN CATCH
        PRINT 'An error occurred in stored procedure uspLogError: ';
        EXECUTE [dbo].[uspPrintError];
        RETURN -1;
    END CATCH
END;