[ 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
Posted by 농부지기
,