在系统视图sys.syslogins中,有createdate与updatedate两个字段,分别表示创建登录名与更新登录名的日期,如果你用updatedate的值来判断一个登录名的权限是否被修改过,那么你就要跳坑里了。当然sys.sysusers视图里面updatedate字段也不能作为某个user权限最后一次修改的依据,如下测试所示:

USE [master]

GO

CREATELOGIN [kerry] WITHPASSWORD=N'kerry123456',DEFAULT_DATABASE=[AdventureWorks2014],CHECK_EXPIRATION=OFF,CHECK_POLICY=OFF

GO

USE [AdventureWorks2014]

GO

CREATEUSER [kerry] FORLOGIN [kerry]

GO

USE [AdventureWorks2014]

GO

ALTERROLE [db_datareader] ADD MEMBER [kerry]

GO

USEmaster;

GO

SELECT  name ,

createdate ,

updatedate ,

accdate ,

dbname

FROM   sys.syslogins

WHERE  name ='kerry';

如下截图所示,sys.syslogins中,name为kerry的这条记录的createdate与updatedate字段值为2017-06-07 11:45:48:527,就是我创建该登录名的时间。

USE AdventureWorks2014;

GO

SELECT  name ,

createdate ,

updatedate

FROM   sys.sysusers

WHERE   name ='kerry';

sys.sysusers中的name为kerry的这条记录的createdate与updatedate字段值也是同一个值。如下所示:

我们修改kerry的权限,发现sys.syslogins和sys.sysusers中updatedate字段的值均没有变化

USE [AdventureWorks2014]

GO

ALTERROLE [db_datawriter] ADD MEMBER [kerry]

GO

USE [AdventureWorks2014]

GO

ALTERROLE [db_ddladmin] ADD MEMBER [kerry]

GO

USE AdventureWorks2014;

GO

SELECT  name ,

createdate ,

updatedate

FROM  sys.sysusers

WHERE  name ='kerry';

当然,如果你修改登录名(login)的SERVER ROLE权限,那么updatedate字段就会变化,如下测试所示

ALTERSERVERROLE [processadmin] ADD MEMBER [kerry]

GO

另外测试发现,启用或禁用DISABLE登录名,sys.syslogins中这个字段updatedate的值是会变化的

ALTERLOGIN [kerry] ENABLE

GO

ALTERLOGIN [kerry] DISABLE

GO

这里就不研究sys.sysusers在什么条件下会触发updatedate字段会更新。 那么如何查看某个账号的权限被变跟过呢? 这个只能用触发器或开启审计,当然也可以用下面脚本,但是这个是有很强的时效性的。

)

-- Get path of default trace file

))

FROM ::fn_trace_getinfo(DEFAULT)

-- Get security changes from the default trace

SELECT*

FROM ::fn_trace_gettable(@tracefile,DEFAULT) trcdata -- DEFAULT means all trace files will be read

INNER JOIN sys.trace_events evt ON trcdata.EventClass = evt.trace_event_id

)

ORDERBY trcdata.StartTime

--trcdata.DatabaseID

--trcdata.TargetLoginName

参考资料:

https://msdn.microsoft.com/zh-cn/library/ms178593.aspx

https://msdn.microsoft.com/zh-cn/library/ms179871.aspx

SQL Server中sys.syslogin中updatedate字段的浅析的更多相关文章

  1. 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?

    如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...

  2. SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法

    操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...

  3. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, ...

  4. Sql Server与.Net(C#)中星期值对比

    最近发现Sql Server与.Net(C#)中星期值居然不匹配,倒不知道依哪一个了. 1.Sql Server declare @date datetime; set @date = '2017-0 ...

  5. 解决VS2010在新建实体数据模型出现“在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误。请与提供程序供应商联系以解决此问题。”的问题

    最近想试着学习ASP.NET MVC,在点击 添加--新建项--Visual C#下的数据中的ADO.NET 实体数据模型,到"选择您的数据连接"时,出现错误,"在 .N ...

  6. SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅!

    原文:SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅! 在可更新订阅的同步复制中,有行筛选的项目表,移除的时候会提示重新初始化所有的快照并且应用此快照,这将导致所有 ...

  7. 【SQL Server】sql server更改了数据表的字段/新增数据表的字段 无法保存

    sql server更改了数据表的字段/新增数据表的字段  无法保存 解决方法:进入 工具-->选项-->Designers-->表设计器和数据库设计器-->取消勾选   即可

  8. SQL SERVER数据库的表中修改字段的数据类型后,不能保存

      在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...

  9. sql server 查询某数据库中包含某字段的所有表格

    场景:查询DNMes数据库中所有包含RFID字段的表名 sql语句: select object_name(id) objName,Name as colName from syscolumns wh ...

随机推荐

  1. app 性能

    Android App优化之性能分析工具 https://www.jianshu.com/p/da2a4bfcba68 -------------- 系列文: 背景:Android App优化, 要怎 ...

  2. Vagrant挂载目录失败mount: unknown filesystem type ‘vboxsf’

    一.背景 ​ 最近在玩Mac OS下的虚拟机,然后有朋友推荐了我Vagrant,但是在设置完跟宿主机共享目录然后启动虚拟机的时候,出现了vagrant mount: unknown filesyste ...

  3. Spring Boot - 获取所有的Bean信息

    前言 Spring Boot启动的时候需要加载许多Bean实现最小化配置,本文将尝试找出Spring启动后加载的所有Bean信息: 通过ApplicationContext 去获取所有的Bean 通过 ...

  4. springboot Aop 统一处理Web请求日志

    1.增加依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  5. XML技术思想

    百科名片: 可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语 ...

  6. Spring Security之动态配置资源权限

    在Spring Security中实现通过数据库动态配置url资源权限,需要通过配置验证过滤器来实现资源权限的加载.验证.系统启动时,到数据库加载系统资源权限列表,当有请求访问时,通过对比系统资源权限 ...

  7. leetcode — search-in-rotated-sorted-array

    /** * Source : https://oj.leetcode.com/problems/search-in-rotated-sorted-array/ * * Created by lverp ...

  8. (2)编译安装lamp三部曲之mysql-技术流ken

    简介 采用yum安装lamp简单,快捷,在工作中也得到了普遍应用.但是如果我们需要某些特定模块功能,以及制定安装位置等,就需要用到编译安装了,接下来将编译安装lamp之mysql. mysql的简介网 ...

  9. Font Awesome 供更精准的图标搜索

    https://www.thinkcmf.com/font/font_awesome/icon/address-book

  10. json接口返回值

    SpringBoot响应客户端渲染数据 1.SpringBoot构造并且返回一个json对象 首先,我们在父包下新建一个pojo的包,并新建一个User类  IDEA自动生成对应的get/set,然后 ...