Difference between revisions of "Dbo.uspLogError (procedure)"
(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 23:27, 26 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;