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

 

  
  
  
  
  1. -- 创建登录触发器,对会话进行管理 
  2. CREATE TRIGGER  TimeWindowControl 
  3. ON ALL SERVER  
  4. FOR LOGON 
  5. AS  
  6. BEGIN 
  7.     DECLARE @PROGRAM_NAME   VARCHAR(256) 
  8.     DECLARE @CurrentTime    INT 
  9.     DECLARE @SetBeginTime1  INT 
  10.     DECLARE @SetEndTime1    INT 
  11.     DECLARE @SetBeginTime2  INT 
  12.     DECLARE @SetEndTime2    INT 
  13.  
  14.     -- 时间计划,对某一段时间内的会话进行管控 
  15.     SET @PROGRAM_NAME = PROGRAM_NAME() 
  16.     SET @CurrentTime = SUBSTRING(CONVERT(VARCHAR, GETDATE(), 108), 1, 2) 
  17.     SET @SetBeginTime1 = 0 
  18.     SET @SetEndTime1 = 9 
  19.     SET @SetBeginTime2 = 19 
  20.     SET @SetEndTime2 = 23 
  21.      
  22.     IF @PROGRAM_NAME = 'ProgramName'  
  23.         AND ((@SetBeginTime1 < @CurrentTime AND @CurrentTime < @SetEndTime1) 
  24.         OR (@SetBeginTime2 < @CurrentTime AND @CurrentTime <= @SetEndTime2)) 
  25.     BEGIN 
  26.         ROLLBACK TRANSACTION 
  27.         RETURN 
  28.     END 
  29. END 
  30.  
  31. -- 删除登录触发器 
  32. -- 如果登录触发器导致你无法使用管理员权限正常登录的时候 
  33. -- 需要删除该登录触发器,你可以使用DAC管理员专用链接命令行登录删除 
  34. -- 需要你在创建登录触发器以前开启DAC!! 
  35. DROP TRIGGER TimeWindowControl ON ALL SERVER 
  36. GO 

 

本文出自 “Fast” 博客,谢绝转载!

你可能感兴趣的:(触发器,数据库,安全,会话,休闲)