虽然同表级(DML)触发器和库级(DDL)触发器共顶着一个帽子,但登陆触发器与二者有本质区别。无论表级还是库级,都是用来进行数据管理的,而登陆触发器是纯粹的安全工具。

登陆触发器只响应LOGON事件,在登陆数据库成功后、用户会话未实际建立前触发。登陆数据库失败,如账号密码错误,不会激发登陆触发器。登陆触发器内部的错误消息及PRINT等SQL语句输出信息,统一写到SQL Server 错误日志。登陆触发器可以同时存在多个,但存在多个时,SQL Server不保证所有触发器的执行顺序,只能使用sp_settriggerorder确定哪一个登陆触发器第一个或最后一个执行。登陆触发器内部执行rollback语句或者发生级别大于20的错误,将会阻止用户继续登陆。

前面说到登陆触发器是纯粹的安全工具,作为安全工具,登陆触发器使用场景都是与安全有关的。下面列举了登陆触发器使用的4种场景:
1、记录登陆用户的登陆时间、登陆IP等。
2、限制某些用户,如Test,在工作时间内不能登陆数据库。
3、限制某些用户,如sa,只能在指定IP或者IP段登陆。
4、限制只有来自指定IP或IP段的登陆可以成功登陆。

登陆触发器语法:

--创建或修改登陆触发器
CREATE [ OR ALTER ] TRIGGER trigger_name --触发器名字
ON ALL SERVER
[ WITH <logon_trigger_option> [ ,...n ] ] --在实际项目中,多使用管理员账号建立登陆触发器,因而这项可以省略
{ FOR| AFTER } LOGON
AS
sql_statement --用户自己编写内容 <ddl_trigger_option> ::=
[ ENCRYPTION ]
[ EXECUTE AS Clause ] -- WITH ENCRYPTION 表示加密该触发器的SQL,使用该项后,将无法通过sp_helptext或数据库管理器查看触发器SQL。
-- WITH EXECUTE AS Clause ,示例:WITH EXECUTE AS 'sa',指定触发器使用哪个用户的权限,省略该项,将使用登陆用户的权限。
--删除登陆触发器
DROP TRIGGER trigger_name ON ALL SERVER
--查询登陆触发器
select * from sys.server_triggers

备注:在登陆触发器内部使用函数EVENTDATA()可以获取触发器上下文事件信息,使用函数ORIGINAL_LOGIN()可以获取当前登陆的用户名。

--登陆触发器示例
--限制用户Test在工作时间(上午7时,晚上18时之间)不能登陆数据库
create trigger tr_XianZhiDengLu
on all server
for logon
as
declare @XianZaiShiJian datetime
set @XianZaiShiJian=GETDATE () if ORIGINAL_LOGIN()='test' and (DATEPART(hh,getdate()) >7 and DATEPART(hh,getdate())<18)
begin
rollback
end

参考文献:

登陆触发器

写作时间:2018-10-05

=====================================================================================
本文只代表本人的见解,可能存在错误,仅用于技术交流。如果你喜欢该文,可以扫下面的二维码打赏我(打赏敬请备注“博客园打赏”五字)。

SQL Server基础之登陆触发器的更多相关文章

  1. SQL Server 限制IP登陆(登陆触发器运用)

    原文:SQL Server 限制IP登陆(登陆触发器运用) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 补 ...

  2. SQL server基础知识(表操作、数据约束、多表链接查询)

    SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...

  3. 数据库开发基础-SQl Server 基础

    SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language  结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...

  4. 【SQL Server】SQL Server基础之存储过程

    SQL Server基础之存储过程  阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...

  5. Sql Server 基础知识

    Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...

  6. 查看SQL SERVER 加密存储过程,函数,触发器,视图

    原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create  PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...

  7. Sql Server 基础语法

    来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select  ...

  8. 《SQL Server基础——SQL语句》

    SQL Server基础--SQL语句       一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE ...

  9. sql server 基础教程[温故而知新三]

    子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果 ...

随机推荐

  1. Jenkins的一些笔记

    公司主要要开发自己的paas平台,集成了Jenkins,真的是遇到了很多很多困难,特别是在api调用的权限这一块,这里,把自己遇到的一些坑的解决方法做一下笔记吧.当然,首先要讲的,就是如何在开启安全的 ...

  2. mysql中主键和唯一键的区别

    区别项 primary key(主键) unique(唯一键约束) 唯一性 可以 可以 是否可以为空 不可以 可以 允许个数 只能有1个 允许多个 是否允许多列组合 允许 允许

  3. (转)解决 TortoiseGit 诡异的 Bad file number 问题

    此问题,请不要使用 rebase, 下载最新的 TortoiseGit 即可: TortoiseGit-2.3中文版与Git安装包_手册: http://download.csdn.net/detai ...

  4. 分享一个用QT实现的Mjpeg-streamer客户端(简易版)

    mainWindow代码如下(由于篇幅问题,子窗口代码不贴出了,有需要源码的可以留下邮箱): /* * Author : 博客园 Lance# */ #include "mainwindow ...

  5. Spring Boot入门(2)使用MySQL数据库

    介绍   本文将介绍如何在Spring项目中连接.处理MySQL数据库.   该项目使用Spring Data JPA和Hibernate来连接.处理MySQL数据库,当然,这仅仅是其中一种方式,你也 ...

  6. VB.NET获取系统特殊目录

    For Each x In GetType(System.Environment.SpecialFolder).GetEnumValues Debug.Print("{0} {1}" ...

  7. JQuery官方学习资料(译):选择器的运作

    Getters 和 Setters     JQuery的方法重载,方法设置和获取值一般使用相同名称的方法,当一个方法用来设置一个值的时候称之为Setter,当一个方法用来获取一个值的时候称之为Get ...

  8. sublime text 安装nodejs开发插件

    系统:windows10nodejs版本:v6.1.14 请先配置好环境变量,这里就不说啦. 下载并设置nodejs插件 下载地址为https://github.com/tanepiper/Subli ...

  9. 深入理解JAVA中的NIO

    前言: 传统的 IO 流还是有很多缺陷的,尤其它的阻塞性加上磁盘读写本来就慢,会导致 CPU 使用效率大大降低. 所以,jdk 1.4 发布了 NIO 包,NIO 的文件读写设计颠覆了传统 IO 的设 ...

  10. Spring Bean的生命周期,《Spring 实战》书中的官方说法

    连着两天的面试 ,都问到了 Spring 的Bean的生命周期,其中还包括 昨晚一波阿里的电话面试.这里找到了Spring 实战中的官方说法.希望各位要面试的小伙伴记住,以后有可能,或者是有时间 去看 ...