SQL Server中sys.syslogin中updatedate字段的浅析
在系统视图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字段的浅析的更多相关文章
- 如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?
如何在SQL Server查询语句(Select)中检索存储过程(Store Procedure)的结果集?(2006-12-14 09:25:36) 与这个问题具有相同性质的其他描述还包括:如何 ...
- SQL Server 2008 安装过程中遇到“性能计数器注册表配置单元一致性”检查失败 问题的解决方法
操作步骤: 1. 在 Microsoft Windows 2003 或 Windows XP 桌面上,依次单击"开始"."运行",然后在"打开&quo ...
- SQL点滴12—SQL Server备份还原数据库中的小把戏
原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support 1 media families, ...
- Sql Server与.Net(C#)中星期值对比
最近发现Sql Server与.Net(C#)中星期值居然不匹配,倒不知道依哪一个了. 1.Sql Server declare @date datetime; set @date = '2017-0 ...
- 解决VS2010在新建实体数据模型出现“在 .NET Framework Data Provider for Microsoft SQL Server Compact 3.5 中发生错误。请与提供程序供应商联系以解决此问题。”的问题
最近想试着学习ASP.NET MVC,在点击 添加--新建项--Visual C#下的数据中的ADO.NET 实体数据模型,到"选择您的数据连接"时,出现错误,"在 .N ...
- SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅!
原文:SQL Server 可更新订阅中有行筛选的同步复制移除项目而不重新初始化所有订阅! 在可更新订阅的同步复制中,有行筛选的项目表,移除的时候会提示重新初始化所有的快照并且应用此快照,这将导致所有 ...
- 【SQL Server】sql server更改了数据表的字段/新增数据表的字段 无法保存
sql server更改了数据表的字段/新增数据表的字段 无法保存 解决方法:进入 工具-->选项-->Designers-->表设计器和数据库设计器-->取消勾选 即可
- SQL SERVER数据库的表中修改字段的数据类型后,不能保存
在数据库里面建了一个表,可是由于对SQL SERVER的建表功能不熟悉,不知道把主键设成什么是好,就先设置了个TEXT类型,可是后来朋友们告诉我说,TEXT类型容易让数据文件变得很大,还 是改成一 ...
- sql server 查询某数据库中包含某字段的所有表格
场景:查询DNMes数据库中所有包含RFID字段的表名 sql语句: select object_name(id) objName,Name as colName from syscolumns wh ...
随机推荐
- 可以用py库: pyautogui (自动测试模块,模拟鼠标、键盘动作)来代替pyuserinput
PyAutoGUI 是一个人性化的跨平台 GUI 自动测试模块 pyUserInput模块安装前需要安装pywin32和pyHook模块.(想要装的看https://www.cnblogs.com/m ...
- HashMap source code view(1)
前言 HashMap source code view 类注释 Hash table based implementation of the Map interface. This implement ...
- 用POLARDB构建客到智能餐饮系统实践
在新零售成为大趋势的今天,餐饮行业也加入到这一浪潮之中.智能餐饮系统将帮助餐饮行业从多个维度提升自己的运营能力和收益,而打造智能餐饮系统SaaS化能力也成为了目前的一个热点.本文中果仁软件联合创始人& ...
- 流式大数据计算实践(1)----Hadoop单机模式
一.前言 1.从今天开始进行流式大数据计算的实践之路,需要完成一个车辆实时热力图 2.技术选型:HBase作为数据仓库,Storm作为流式计算框架,ECharts作为热力图的展示 3.计划使用两台虚拟 ...
- MyBatis源码解析(六)——DataSource数据源模块之池型数据源
原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6675674.html 1 回顾 上一文中解读了MyBatis中非池型数据源的源码,非池型也 ...
- java反射注解妙用-获取所有接口说明
转载请注明出处:https://www.cnblogs.com/wenjunwei/p/10293490.html 前言 最近在做项目权限,使用shiro实现restful接口权限管理,对整个项目都进 ...
- 应用负载均衡之LVS(五):lvs和nginx的wrr加权调度算法规律分析
返回LVS系列文章:http://www.cnblogs.com/f-ck-need-u/p/7576137.html 加权调度算法(wrr)是一种很常见的调度算法.它们按照权重比例进行调度,但实际调 ...
- centos rancher 通过本机 docker images 新增container
示例目标: 将centos 本地的docker image ,通过rancher 进行 add container 相关步骤: step 1 : rancher 所在 centos 主机,有相应的 d ...
- camera测试之颜色还原
测试目的:camera对色彩的还原能力 测试主要设备:24色色卡,灯箱 测试环境:1.D65/CW/A光源,照度为600±100lux,整个chart表面的亮度值相差小于10% 2.D65光源,照度为 ...
- vue使用element-ui的el-input监听不了回车事件解决
vue使用element-ui的el-input监听不了回车事件,原因应该是element-ui自身封装了一层input标签之后,把原来的事件隐藏了,所以如下代码运行是无响应的: <el-inp ...