[ MSSQL. Procedure 오류 발생 시 Log만 저장하기 ]
1. 정의
. 보통 오류가 발생하면 Rollback이 되기 때문에 trace정보등을 db에 저장 할 수 가 없다.
. 이에 대한 방법으로 같은db에 dbLink정보를 만들어서
Procedure호출 시 dbLinknam.??.db.log_procdure_name arg1, arg2;
와 같이 호출 하면 main transaction과 관계없이 log만 insert 및 commit이 된다.
2. 예제
EXEC TMS_SVR.GDMIP.dbo.CM_PROCEDURE_EXEC_LOG_PROC @@PROCID, @ERR_MSG;
USE [TMS];
GO
SET ANSI_NULLS ON;
GO
SET QUOTED_IDENTIFIER ON;
GO
ALTER PROCEDURE [dbo].[CM_PROCEDURE_EXEC_LOG_PROC]
(
@SPID INT,
@LOG_MESSAGE NVARCHAR(1000) = NULL,
@LOG_UID UNIQUEIDENTIFIER = NULL,
@ROW_CNT DECIMAL(18,0) = NULL
)
AS
SET NOCOUNT ON;
INSERT INTO dbo.CM_PROCEDURE_EXEC_LOG
(
SP_NAME
,LOG_MESSAGE
,LOG_DATE
,LOG_UID
,ROW_CNT
)
VALUES
(
OBJECT_NAME(@SPID)
,@LOG_MESSAGE
,GETDATE()
,@LOG_UID
,@ROW_CNT
);
GO
'(DB) MS SQL > Procedure (문법)' 카테고리의 다른 글
MS Sql -Procedure. Dynamic sql (0) | 2017.12.08 |
---|---|
MS SQL.Procedure-시스템 변수 (0) | 2017.02.09 |
MS SQL.Procedure-값 return (0) | 2017.02.09 |
MS SQL.Procedure -Argument (0) | 2017.02.09 |
MS SQL.Procedure -Cursor, Fetch (0) | 2017.02.09 |