代码改变世界

随笔分类 - 00.SQL Server 监控

SQL Server Audit监控触发器状态

2013-12-31 14:14 by 听风吹雨, 2746 阅读, 收藏, 编辑
摘要: DML触发器一般会运用在业务系统的逻辑处理上,在你对数据库用户权限控制不当的时候,这些DML触发器很可能莫名的被禁用或者删除了,你作为数据库管理员你想做冤大头嘛?背黑锅嘛?如果不想,下面给出4种解决方案: 1. 使用DDL触发器对服务级别或者数据库级别进行监控,可以参考文档:SQL Server DDL触发器运用,效果如下图所示: (Figure1:触发器的日志) 2. 也可以使用数据库DDL事件通知,可以参考文档:SQL Server 事件通知(Event notifications),效果如上图所示; 阅读全文

SQL Server 监控系列(文章索引)

2013-12-20 16:32 by 听风吹雨, 2486 阅读, 收藏, 编辑
摘要: 一.前言(Introduction) SQL Server监控在很多时候可以帮助我们了解数据库做了些什么,比如谁谁在什么时候修改了表结构,谁谁在删除了某个对象,当这些事情发生了,老板在后面追着说这是谁干的,如果你找不出元凶,那么就成为背黑锅的人了。 如果你想更了解什么时候需要对数据库做什么监控,那么我建议你看看本系列文章; 下图是一个关于SQL Server可用做监控功能的逻辑关系图: (Figure1:SQL Server可用做监控功能的逻辑关系图) 二.系列文章索引(Catalog) 阅读全文

SQL Server 数据变更时间戳(timestamp)在复制中的运用

2013-12-20 10:43 by 听风吹雨, 25698 阅读, 收藏, 编辑
摘要:一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)方案(Solution)方案一(Solution One)方案二(Solution Two)方案三(Solution Three)实现过程(Process)注意事项(Attention)参考文献(References)二.背景(Contexts) SQL Server数据库中Basic与Group两个表需要提供部分字段给其它程序读取,程序把这两个表的数据缓存到内存中,但是程序想知道这两个表数据的变更信息,包括:Insert/Update/Delete,有什么方式可以实现呢?三.方案(Solut. 阅读全文

SQL Server 更改跟踪(Chang Tracking)监控表数据

2013-12-19 17:24 by 听风吹雨, 12807 阅读, 收藏, 编辑
摘要:一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)主要区别与对比(Compare)实现监控表数据步骤(Process)参考文献(References)二.背景(Contexts) 在SQL Server 2008以上版本中,对数据库中的用户表所做的 DML 更改(插入、更新和删除操作)除了:SQL Server 变更数据捕获(CDC)监控表数据之外,还有一个新增功能,那就是:更改跟踪(Chang Tracking),它跟CDC有什么不同呢?使用场景有什么区别呢?三.主要区别与对比(Compare)1. SQL Server 2008 引入了两. 阅读全文

SQL Server 变更数据捕获(CDC)监控表数据

2013-12-18 09:47 by 听风吹雨, 21208 阅读, 收藏, 编辑
摘要:一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)实现过程(Realization)补充说明(Addon)参考文献(References)二.背景(Contexts) 在SQL Server 2008版本之前,对表数据库的变更监控,我们通常使用DML触发器进行监控,把DML操作中的INSERT/UPDATE/DELETE数据记录下来,但是触发器的维护比较困难; 当SQL Server 2008新功能:变更数据捕获(Change Data Capture,即CDC)出来之后,我发现这正是我想要的,因为我之前使用DML触发器实现的时候也是把UP.. 阅读全文

SQL Server 事件通知(Event notifications)

2013-12-13 17:21 by 听风吹雨, 9227 阅读, 收藏, 编辑
摘要: SQL Server事件通知有什么用呢?如果你想监控SQL Server的DDL操作,你可以通过DDL触发器(参考:SQL Server DDL触发器运用),也可以通过SQL Server 事件通知把这个事件相关的信息发送到 Service Broker 服务;他们最大的区别就是DDL触发器可以进行ROLLBACK,而事件通知不行;还有,事件通知是异步发送消息的;   SQL Server 事件通知还可以响应部分SQL跟踪事件,即SQL Trace (参考:SQL Server 默认跟踪(Default Trace)、SQL Server 创建跟踪); 阅读全文

SQL Server DDL触发器运用

2013-10-11 13:44 by 听风吹雨, 10820 阅读, 收藏, 编辑
摘要:一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)基础知识(Rudimentary Knowledge)DDL运用场景(DDL Scene)补充说明(Addon)疑问(Questions)参考文献(References)二.背景(Contexts) 说到触发器,大家都会想到这样的使用场景:当一个表的数据修改了,运用DML触发插入或者更新到其它表中;那DDL触发器(SQL Server 2005引入的新功能)会运用到什么场景中呢?本文将为你讲述4种运用DDL触发器的场景: 1) 禁止用户修改和删除表; 2) 禁止用户删除数据库; 3) 记... 阅读全文

SQL Server 默认跟踪(Default Trace)

2013-10-09 12:54 by 听风吹雨, 17702 阅读, 收藏, 编辑
摘要:一.本文所涉及的内容(Contents)本文所涉及的内容(Contents)背景(Contexts)基础知识(Rudimentary Knowledge)查看默认跟踪信息(Default Trace)补充说明(Addon)参考文献(References)二.背景(Contexts) 思考这样的场景:数据库的表、存储过程经常别修改,当这些修改造成BUG的时候,很多开发都不承认是他们干的,那我们有没办法找出谁干的呢? SQL Server有Default Trace默认跟踪,数据库记录信息到log.trc文件,可以查看trace_event_id,46表示Create对象(Object:Cre.. 阅读全文

SQL Server 创建数据库邮件

2013-10-09 12:21 by 听风吹雨, 7897 阅读, 收藏, 编辑
摘要: 一、 背景 数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果。二、 基础知识 msdb系统数据库保存有关Job,Database Mail,Nodifyication等等之类信息的。MSSQL2005之后的邮件功能,使用了Services Broker进行了队列处理。然后使用外部进程,这个可以在配置成功Mail以后查看任务管理器中的进程。 另外 sp_send_dbmail是手动发送邮件的存储过程,我们必须显示的赋值才能发送。三、 图形界面方式创建数据库邮件下面就以SSMS的图形界面 阅读全文

SQL Server 错误日志过滤(ERRORLOG)

2013-06-24 15:54 by 听风吹雨, 16342 阅读, 收藏, 编辑
摘要:一、背景 有一天我发现SQL Server服务器的错误日志中包括非常多关于sa用户的登陆错误信息:“Login failed for user 'sa'. 原因: 评估密码时出错。[客户端: XX.XX.XX.XX]”。可是我很久之前就已经禁用了sa用户,怎么还会有那么多的sa用户登陆信息呢?我猜... 阅读全文

SQL Server 错误日志收缩(ERRORLOG)

2013-06-24 15:15 by 听风吹雨, 3386 阅读, 收藏, 编辑
摘要:一、基础知识默认情况下,错误日志位于 :C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\LOG\ERRORLOG和ERRORLOG.n 文件中。默认保留有7个 SQL Server 错误日志文件,分别是:ErrorLog,Errorlog.1~Errorlog.6 ,当前的错误日志(文件ErrorLog)没有扩展名。每当启动 SQL Server 实例时,将创建新的错误日志ErrorLog,并将之前的ErrorLog更名为ErrorLog.1,之前的ErrorLog.1更名为ErrorLog.2,依次类推,原先的ErroLog.6被删除。 阅读全文

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

2013-05-23 16:51 by 听风吹雨, 25496 阅读, 收藏, 编辑
摘要: 一、背景在MySQL的mysql.User表保存了登陆用户的权限信息,Host和User字段则是关于登陆IP的限制。但是在SQL Server没有这样一个表,那SQL Server有什么办法可以实现类似的安全控制的功能呢?SQL Server 包括三种常规类型的触发器:DML触发器、DDL触发器和登录触发器。DML触发器是比较常使用的,它通常在表或视图中修改数据(INSERT、UPDATE和DELETE 等)为了保证业务数据的完整性和一致性,可以对事务进行回滚等操作;如果你对DDL触发器感兴趣,可以参考:SQL Server DDL触发器运用 阅读全文