SQL Server中sys.syslogin中updatedate字段的浅析

栏目: 数据库 · SQL Server · 发布时间: 6年前

内容简介:SQL Server中sys.syslogin中updatedate字段的浅析

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

USE [master]

GO

CREATE LOGIN [kerry] WITH PASSWORD = N'kerry123456' , DEFAULT_DATABASE = [AdventureWorks2014] , CHECK_EXPIRATION = OFF , CHECK_POLICY = OFF

GO

USE [AdventureWorks2014]

GO

CREATE USER [kerry] FOR LOGIN [kerry]

GO

USE [AdventureWorks2014]

GO

ALTER ROLE [db_datareader] ADD MEMBER [kerry]

GO

USE master ;

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,就是我创建该登录名的时间。

SQL Server中sys.syslogin中updatedate字段的浅析

USE AdventureWorks2014 ;

GO

SELECT   name ,

        createdate ,

        updatedate

FROM     sys . sysusers

WHERE    name = 'kerry' ;

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

SQL Server中sys.syslogin中updatedate字段的浅析

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

USE [AdventureWorks2014]

GO

ALTER ROLE [db_datawriter] ADD MEMBER [kerry]

GO

USE [AdventureWorks2014]

GO

ALTER ROLE [db_ddladmin] ADD MEMBER [kerry]

GO

SQL Server中sys.syslogin中updatedate字段的浅析

USE AdventureWorks2014 ;

GO

SELECT   name ,

        createdate ,

        updatedate

FROM     sys . sysusers

WHERE    name = 'kerry' ;

SQL Server中sys.syslogin中updatedate字段的浅析

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

ALTER SERVER ROLE [processadmin] ADD MEMBER [kerry]

GO

SQL Server中sys.syslogin中updatedate字段的浅析

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

ALTER LOGIN [kerry] ENABLE

GO

ALTER LOGIN [kerry] DISABLE

GO

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

DECLARE @tracefile VARCHAR ( 500 )

-- Get path of default trace file

SELECT @tracefile = CAST ( value AS VARCHAR ( 500 ))

FROM :: fn_trace_getinfo ( DEFAULT )

WHERE traceid = 1

AND property = 2

-- 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

WHERE trcdata . EventClass IN ( 102 , 103 , 104 , 105 , 106 , 108 , 109 , 110 , 111 )

ORDER BY trcdata . StartTime

                 --trcdata.DatabaseID

                 --trcdata.TargetLoginName

SQL Server中sys.syslogin中updatedate字段的浅析

参考资料:

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

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


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网站分析实战

网站分析实战

王彦平 吴盛峰 / 电子工业出版社 / 2013-1 / 59.00元

《网站分析实战:如何以数据驱动决策,提升网站价值》由王彦平、吴盛峰著。目前,越来越多的网站开始重视数据,并期望从中发现新的机会,不管你是做网络营销、互联网产品设计、电子商务运营、个人站点运营维护,我们都希望从数据中寻找有价值的结论,并且指导公司管理层的决策,最终创造更大的网站价值。《网站分析实战:如何以数据驱动决策,提升网站价值》以通俗易懂的方式来讲解网站分析所需掌握的知识,剖析日常工作中遇到的问......一起来看看 《网站分析实战》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具