실제 LOGON 트리거를 적용하려고 보니
로그가 남는 테이블에 대한 Write의 권한이 있어야 했다
번거롭게 테이블에 Write 권한을 주는거보다
프로시저를 작성하여 해당 프로시저에게만 실행권한을 주어 접근권한을 최소화 하였다.
아래는 작성한 예제입니다.
/****** 개체: DdlTrigger [TRG_LOGON_DBLOGIN] 스크립트날짜: 05/20/2013 18:56:34 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [TRG_LOGON_DBLOGIN]
ON ALL SERVER FOR LOGON
AS
BEGIN
DECLARE @EVENTLOG XML
SET @EVENTLOG = EVENTDATA()
EXEC TEST_DB.DBO.sp_insert_logon_dblogin @EVENTLOG
-- DECLARE @EVENTLOG XML
-- SET @EVENTLOG = EVENTDATA()
--
--
--
-- INSERT TEST_DB.DBO.DBLOGIN_LOG_TBL
--
-- SELECT
-- @EVENTLOG.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(60)') AS LOGIN_NAME,
-- @EVENTLOG.value('(/EVENT_INSTANCE/ClientHost)[1]','nvarchar(20)') AS LOGIN_IP_ADDRESS ,
-- @EVENTLOG.value('(/EVENT_INSTANCE/LoginType)[1]','nvarchar(40)') AS LOGIN_AUTH,
-- CONVERT(NVARCHAR(10),GETDATE(),126) AS LOGIN_DATE,
-- CONVERT(NVARCHAR(8),GETDATE(),108) AS LOGIN_TIME
--
END
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---프로시저부분
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
CREATE PROCEDURE DBO.sp_insert_logon_dblogin
(
@EVENTLOG XML
)
AS
INSERT TEST_DB.DBO.DBLOGIN_LOG_TBL
SELECT
@EVENTLOG.value('(/EVENT_INSTANCE/LoginName)[1]','nvarchar(60)') AS LOGIN_NAME,
@EVENTLOG.value('(/EVENT_INSTANCE/ClientHost)[1]','nvarchar(20)') AS LOGIN_IP_ADDRESS ,
@EVENTLOG.value('(/EVENT_INSTANCE/LoginType)[1]','nvarchar(40)') AS LOGIN_AUTH,
CONVERT(NVARCHAR(10),GETDATE(),126) AS LOGIN_DATE,
CONVERT(NVARCHAR(8),GETDATE(),108) AS LOGIN_TIME
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
---실행권한
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
GRANT EXECUTE ON sp_insert_logon_dblogin TO TEST_ID
'MS-SQL > Query' 카테고리의 다른 글
데이터베이스 무결성 검사 (0) | 2013.07.03 |
---|---|
링크드서버 사용자계정 맵핑 연결 방법 (0) | 2013.05.21 |
SQL DB Login 접속 실패 로그 확인 (0) | 2013.05.10 |
로그인시 접속자 로그가 남게 Trigger 생성 (0) | 2013.05.09 |
CURSOR 간단한 예제. (0) | 2013.03.08 |