SQL Server基础之登陆触发器
虽然同表级(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基础之登陆触发器的更多相关文章
- SQL Server 限制IP登陆(登陆触发器运用)
原文:SQL Server 限制IP登陆(登陆触发器运用) 一.本文所涉及的内容(Contents) 本文所涉及的内容(Contents) 背景(Contexts) 实现代码(SQL Codes) 补 ...
- SQL server基础知识(表操作、数据约束、多表链接查询)
SQL server基础知识 一.基础知识 (1).存储结构:数据库->表->数据 (2).管理数据库 增加:create database 数据库名称 删除:drop database ...
- 数据库开发基础-SQl Server 基础
SQL Server 基础 1.什么是SQL Server SQL:Structured Query Language 结构化查询语言 SQL Server是一个以客户/服务器(c/s)模式访问.使 ...
- 【SQL Server】SQL Server基础之存储过程
SQL Server基础之存储过程 阅读目录 一:存储过程概述 二:存储过程分类 三:创建存储过程 1.创建无参存储过程 2.修改存储过程 3.删除存储过程 4.重命名存储过程 5.创建带参数的存储 ...
- Sql Server 基础知识
Sql Server 基础知识: http://blog.csdn.net/t6786780/article/details/4525652 Sql Server 语句大全: http://www.c ...
- 查看SQL SERVER 加密存储过程,函数,触发器,视图
原文:查看SQL SERVER 加密存储过程,函数,触发器,视图 create PROCEDURE sp_decrypt(@objectname varchar(50))ASbeginset noc ...
- Sql Server 基础语法
来自:http://www.cnblogs.com/AaronYang/archive/2012/04/24/2468093.html Sql Server 基础语法 -- 查看数据表 select ...
- 《SQL Server基础——SQL语句》
SQL Server基础--SQL语句 一.创建和删除数据库: 1.创建数据库(默认化初始值) 格式: CREATE DATABASE 数据库名称 例如: CREATE DATABASE ...
- sql server 基础教程[温故而知新三]
子曰:“温故而知新,可以为师矣.”孔子说:“温习旧知识从而得知新的理解与体会,凭借这一点就可以成为老师了.“ 尤其是咱们搞程序的人,不管是不是全栈工程师,都是集十八般武艺于一身.不过有时候有些知识如果 ...
随机推荐
- leetcode — merge-intervals
import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util. ...
- 10分钟学会使用YOLO及Opencv实现目标检测(下)|附源码
将YOLO应用于视频流对象检测 首先打开 yolo_video.py文件并插入以下代码: # import the necessary packages import numpy as np impo ...
- kubernets 单节点安装
关闭防火墙和Selinux. setenforce 0 systemctl stop firewalld systemctl disable firewalld 配置EPEL源 yum install ...
- SpringMVC学习(四)———— 数据回显与自定义异常处理器
一.数据回显技术 Springmvc默认支持对pojo类型的数据回显,默认不支持简单类型的数据回显 1.1.什么是数据回显? 在信息校验时,如果发生校验错误,那么把校验的数据信息,依然停留在当前页面, ...
- 建了个QQ群,不定期分享一些资料,欢迎加入
技术源于生活,大家一起进阶 Java学习交流QQ群:603654340 大数据学习交流QQ群:217770236 感谢您的来访,不妨关注一下我吧……
- [译]如何在.NET Core中使用System.Drawing?
你大概知道System.Drawing,它是一个执行图形相关任务的流行的API,同时它也不属于.NET Core的一部分.最初是把.NET Core作为云端框架设计的,它不包含非云端相关API.另一方 ...
- C# 插件热插拔
所谓热插拔就是插件可以 在主程序不重新启动的情况直接更新插件, 网上有很多方案: https://www.cnblogs.com/happyframework/p/3405811.html 如下: 但 ...
- vb.net 多线程運用 ping
Imports System.IOImports System.ThreadingImports System.Diagnostics Public Class Form1 Dim A(254) As ...
- 【Java每日一题】20170227
20170224问题解析请点击今日问题下方的“[Java每日一题]20170227”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; import jav ...
- Java集合框架学习
集合框架 集合框架的目标 该框架必须是高性能的.基本集合(动态数组,链表,树,哈希表)的实现必须是高效的. 该框架允许 不同类型的集合,以类似的方式工作,具有高度的互操作性. 对一个集合的扩展和适应必 ...