摘要:
一.背景(Contexts) 当需要用远程服务器数据库和本地进行数据交互的时候(例如导数据等),我们通常会在本地创建一个远程服务器的数据库链接,关于创建创建链接服务器可以参考:SQL Server 创建链接服务器,但是我们很少去关注链接服务器的安全性问题。 为了控制链接服务器的安全性,我们采取的方法是:控制只有某个用户能使用这个链接服务器,实现的效果就如Figure1和Figure2所示,TestLink用户能看到并使用链接服务器:[192.168.1.5],而sa用户却无法看到链接服务器 阅读全文
SQL Server Audit监控触发器状态
2013-12-31 14:14 by 听风吹雨, 3332 阅读, 3 推荐, 收藏, 编辑
摘要:
DML触发器一般会运用在业务系统的逻辑处理上,在你对数据库用户权限控制不当的时候,这些DML触发器很可能莫名的被禁用或者删除了,你作为数据库管理员你想做冤大头嘛?背黑锅嘛?如果不想,下面给出4种解决方案:
1. 使用DDL触发器对服务级别或者数据库级别进行监控,可以参考文档:SQL Server DDL触发器运用,效果如下图所示:
(Figure1:触发器的日志)
2. 也可以使用数据库DDL事件通知,可以参考文档:SQL Server 事件通知(Event notifications),效果如上图所示; 阅读全文
SQL Server 监控系列(文章索引)
2013-12-20 16:32 by 听风吹雨, 2924 阅读, 2 推荐, 收藏, 编辑
摘要:
一.前言(Introduction)
SQL Server监控在很多时候可以帮助我们了解数据库做了些什么,比如谁谁在什么时候修改了表结构,谁谁在删除了某个对象,当这些事情发生了,老板在后面追着说这是谁干的,如果你找不出元凶,那么就成为背黑锅的人了。
如果你想更了解什么时候需要对数据库做什么监控,那么我建议你看看本系列文章;
下图是一个关于SQL Server可用做监控功能的逻辑关系图:
(Figure1:SQL Server可用做监控功能的逻辑关系图)
二.系列文章索引(Catalog) 阅读全文
SQL Server 数据变更时间戳(timestamp)在复制中的运用
2013-12-20 10:43 by 听风吹雨, 28206 阅读, 4 推荐, 收藏, 编辑
摘要:一.本文所涉及的内容(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 听风吹雨, 18116 阅读, 10 推荐, 收藏, 编辑
摘要:一.本文所涉及的内容(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 听风吹雨, 30139 阅读, 23 推荐, 收藏, 编辑
摘要:一.本文所涉及的内容(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 听风吹雨, 11340 阅读, 4 推荐, 收藏, 编辑
摘要:
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 堆表行存储大小(Record Size)
2013-11-19 15:01 by 听风吹雨, 4769 阅读, 8 推荐, 收藏, 编辑
摘要:
有的时候你需要计算堆表的一行记录有多大?又或者想计算一个数据页(8K)能保存多少条记录?字段类型是设计成nchar还是nvarchar?他们有什么区别呢?在做数据库表设计的时候会经常出现这些问题。要计算一行记录的大小,并不是简单把列字段类型大小直接相加就行的,具体原因请看下文。
下面是计算堆表行记录大小的公式,它引自MSDN:估计堆的大小
计算公式:Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4 阅读全文
SQL Server DDL触发器运用
2013-10-11 13:44 by 听风吹雨, 13097 阅读, 7 推荐, 收藏, 编辑
摘要:一.本文所涉及的内容(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 听风吹雨, 21328 阅读, 12 推荐, 收藏, 编辑
摘要:一.本文所涉及的内容(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 听风吹雨, 9153 阅读, 6 推荐, 收藏, 编辑
摘要:
一、 背景 数据库发邮件通知数据库的运行状态(状态可以通过JOB形式获取)和信息,达到预警的效果。二、 基础知识 msdb系统数据库保存有关Job,Database Mail,Nodifyication等等之类信息的。MSSQL2005之后的邮件功能,使用了Services Broker进行了队列处理。然后使用外部进程,这个可以在配置成功Mail以后查看任务管理器中的进程。 另外 sp_send_dbmail是手动发送邮件的存储过程,我们必须显示的赋值才能发送。三、 图形界面方式创建数据库邮件下面就以SSMS的图形界面 阅读全文
SQL Server 复制系列(文章索引)
2013-09-30 17:04 by 听风吹雨, 2936 阅读, 4 推荐, 收藏, 编辑
摘要:
二.前言(Introduction)
SQL Server的复制、日志传送、镜像等几个高级功能中,个人感觉复制是比较符合我的生产环境的要求的,其实搭建复制并不难,但是在网上关于:通过备份文件初始化复制、跨网段(跨机房)复制的文章会比较少,这里就着重讲讲这些内容;
三.复制逻辑结构图(Construction)
下图是一个关于SQL Server通过备份文件初始化复制的逻辑结构图:(Figure1:SQL Server备份文件初始化订阅逻辑结构图)
为了与SQL Server的复制进行对比,我们去了解下一下MySQL的Master/Slave 阅读全文
SQL Server 跨网段(跨机房)FTP复制
2013-09-24 17:53 by 听风吹雨, 6410 阅读, 6 推荐, 收藏, 编辑
摘要:
二.背景(Contexts)
搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段、跨机房异地搭建复制的时候就需要注意了,因为SQL Server复制不支持通过IP连接分发服务器,那有什么办法解决跨网段、跨机房的问题呢?
我在SQL Server跨网段(跨机房)复制已经讲到了两种解决方法,如果想用请求订阅模式,共享快照文件权限的配置比较麻烦,更好更安全的方式是通过FTP形式读取快照文件进行初始化; 阅读全文
SQL Server 跨网段(跨机房)复制
2013-09-18 15:30 by 听风吹雨, 11425 阅读, 6 推荐, 收藏, 编辑
摘要:
搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段、跨机房异地搭建复制的时候就需要注意了,因为SQL Server复制不支持通过IP连接分发服务器,那有什么办法解决跨网段、跨机房的问题呢?
在跨网段、跨机房进行SQL Server复制的时候需要区分两种情况:一种是外网IP的1433端口对应了这台机器SQL Server的数据库端口;另外一种情况是外网IP对应SQLServer机器的端口不是1433;下面是几种解决方案: 阅读全文
SQL Server 通过备份文件初始化复制
2013-09-09 11:39 by 听风吹雨, 8076 阅读, 10 推荐, 收藏, 编辑
摘要:
MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件在Slave进行还原;这样做的好处是可以更加快速的搭建好环境,因为可以对备份文件进行压缩、分包,并且可以使用FTP等工具保证传输过程的安全与快捷;详情可参考:Windows下搭建MySQL Master Slave
当SQL Server遇到同样需要对历史数据库搭建复制,通常的做法是在本地发布快照,再由订阅传输数据 阅读全文
SQL Server 复制:事务发布
2013-09-06 17:33 by 听风吹雨, 17836 阅读, 9 推荐, 收藏, 编辑
摘要:
一、背景
在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程;
二、实现过程
(一) 环境信息
系统环境:Windows Server 2008 + SQL Server 2008 R2 阅读全文
SQL Server 维护计划实现数据库备份(策略实战)
2013-08-29 09:08 by 听风吹雨, 13493 阅读, 3 推荐, 收藏, 编辑
摘要:
一、背景
之前写过一篇关于备份的文章:SQL Server 维护计划实现数据库备份,上面文章使用完整备份和差异备份基本上能解决数据库备份的问题,但是为了保障数据更加安全,我们需要再次完善我们的备份计划;
下面这篇文章主要加入了日志备份,并对设计备份的频率和设计命名规范等问题进行实战;
二、最佳实践
(一) 备份计划
1) 每周星期日的2:00:00执行数据库的完整备份;
2) 每周星期一至星期六每天的2:00:00执行数据库的差异备份;
3) 每天在8:00:00和23:59:59之间、每1小时执行数据库的日志备份; 阅读全文
Windows下搭建MySQL Master Slave
2013-08-09 14:35 by 听风吹雨, 7426 阅读, 4 推荐, 收藏, 编辑
摘要:
一、背景
服务器上放了很多MySQL数据库,为了安全,现在需要做Master/Slave方案,因为操作系统是Window的,所以没有办法使用keepalived这个HA工具,但是我们可以接受人工进行切换,有什么好的方案呢?
二、几种Master/Slave逻辑架构图
clip_image001
(Figure1:单Master-单Slave)
(Figure2:单Master-多Slave)
(Figure3:单Master-级联Slave)
(Figure4:Master/Slave部署逻辑图)
三、搭建过程
环境:Windows Server 阅读全文
SQL Server 自动增长过大
2013-08-07 12:32 by 听风吹雨, 4350 阅读, 0 推荐, 收藏, 编辑
摘要:一、背景我们遇到的问题如下图所示:自动增长无端端就按照这样的比例进行增长;(Figure1:问题所在)尝试使用SSMS修改自动增长值,就会出现下面的错误:(Figure2:错误信息)遇到上面的问题,我们需要解决两个问题:1. 把数据文件收缩到一定范围内的值,腾出磁盘空间;2. 重新设置自动增长的值,可以按照百分比,也可以使用指定的空间大小,我个人倾向使用n*1024M这样的值,仅供参考;3. 如果有需要你也可以进行日志文件的收缩;二、解决过程1. 使用下面的脚本修改自动增长的值:--1024ALTER DATABASE [DataBaseName]MODIFY FILE ( NAME = N& 阅读全文
SQL Server 迁移数据到MySQL
2013-08-05 11:59 by 听风吹雨, 61289 阅读, 20 推荐, 收藏, 编辑
摘要:
一、背景由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL;由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据;上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中、MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确 阅读全文