您的位置:首页 > 数据库

一天一点T-SQL:使用登录触发器进行安全管控

2012-02-24 13:15 337 查看
-- 创建登录触发器,对会话进行管理
CREATE TRIGGER  TimeWindowControl
ON ALL SERVER
FOR LOGON
AS
BEGIN
DECLARE @PROGRAM_NAME   VARCHAR(256)
DECLARE @CurrentTime    INT
DECLARE @SetBeginTime1  INT
DECLARE @SetEndTime1    INT
DECLARE @SetBeginTime2  INT
DECLARE @SetEndTime2    INT

-- 时间计划,对某一段时间内的会话进行管控
SET @PROGRAM_NAME = PROGRAM_NAME()
SET @CurrentTime = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 108), 1, 2)
SET @SetBeginTime1 = 0
SET @SetEndTime1 = 9
SET @SetBeginTime2 = 19
SET @SetEndTime2 = 23

IF @PROGRAM_NAME = 'ProgramName'
AND ((@SetBeginTime1 < @CurrentTime AND @CurrentTime < @SetEndTime1)
OR (@SetBeginTime2 < @CurrentTime AND @CurrentTime <= @SetEndTime2))
BEGIN
ROLLBACK TRANSACTION
RETURN
END
END

-- 删除登录触发器
-- 如果登录触发器导致你无法使用管理员权限正常登录的时候
-- 需要删除该登录触发器,你可以使用DAC管理员专用链接命令行登录删除
-- 需要你在创建登录触发器以前开启DAC!!
DROP TRIGGER TimeWindowControl ON ALL SERVER
GO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息