代码改变世界

SQL Server 链接服务器的安全

2014-01-03 19:42 by 听风吹雨, 7978 阅读, 收藏, 编辑
摘要: 一.背景(Contexts) 当需要用远程服务器数据库和本地进行数据交互的时候(例如导数据等),我们通常会在本地创建一个远程服务器的数据库链接,关于创建创建链接服务器可以参考:SQL Server 创建链接服务器,但是我们很少去关注链接服务器的安全性问题。 为了控制链接服务器的安全性,我们采取的方法是:控制只有某个用户能使用这个链接服务器,实现的效果就如Figure1和Figure2所示,TestLink用户能看到并使用链接服务器:[192.168.1.5],而sa用户却无法看到链接服务器阅读全文

SQL Server Audit监控触发器状态

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

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

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

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

2013-12-20 10:43 by 听风吹雨, 22684 阅读, 收藏, 编辑
摘要: 一.本文所涉及的内容(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 听风吹雨, 8022 阅读, 收藏, 编辑
摘要: 一.本文所涉及的内容(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 听风吹雨, 15123 阅读, 收藏, 编辑
摘要: 一.本文所涉及的内容(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 听风吹雨, 7811 阅读, 收藏, 编辑
摘要: 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 听风吹雨, 2895 阅读, 收藏, 编辑
摘要: 有的时候你需要计算堆表的一行记录有多大?又或者想计算一个数据页(8K)能保存多少条记录?字段类型是设计成nchar还是nvarchar?他们有什么区别呢?在做数据库表设计的时候会经常出现这些问题。要计算一行记录的大小,并不是简单把列字段类型大小直接相加就行的,具体原因请看下文。 下面是计算堆表行记录大小的公式,它引自MSDN:估计堆的大小 计算公式:Row_Size = Fixed_Data_Size + Variable_Data_Size + Null_Bitmap + 4阅读全文

SQL Server DDL触发器运用

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

SQL Server 复制系列(文章索引)

2013-09-30 17:04 by 听风吹雨, 1886 阅读, 收藏, 编辑
摘要: 二.前言(Introduction)   SQL Server的复制、日志传送、镜像等几个高级功能中,个人感觉复制是比较符合我的生产环境的要求的,其实搭建复制并不难,但是在网上关于:通过备份文件初始化复制、跨网段(跨机房)复制的文章会比较少,这里就着重讲讲这些内容; 三.复制逻辑结构图(Construction)   下图是一个关于SQL Server通过备份文件初始化复制的逻辑结构图:(Figure1:SQL Server备份文件初始化订阅逻辑结构图) 为了与SQL Server的复制进行对比,我们去了解下一下MySQL的Master/Slave阅读全文

SQL Server 跨网段(跨机房)FTP复制

2013-09-24 17:53 by 听风吹雨, 4975 阅读, 收藏, 编辑
摘要: 二.背景(Contexts)   搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段、跨机房异地搭建复制的时候就需要注意了,因为SQL Server复制不支持通过IP连接分发服务器,那有什么办法解决跨网段、跨机房的问题呢?   我在SQL Server跨网段(跨机房)复制已经讲到了两种解决方法,如果想用请求订阅模式,共享快照文件权限的配置比较麻烦,更好更安全的方式是通过FTP形式读取快照文件进行初始化;阅读全文

SQL Server 跨网段(跨机房)复制

2013-09-18 15:30 by 听风吹雨, 7992 阅读, 收藏, 编辑
摘要: 搭建SQL Server复制的时候,如果网络环境是局域网内,通过主机名就可以实现了,但是如果是跨网段、跨机房异地搭建复制的时候就需要注意了,因为SQL Server复制不支持通过IP连接分发服务器,那有什么办法解决跨网段、跨机房的问题呢? 在跨网段、跨机房进行SQL Server复制的时候需要区分两种情况:一种是外网IP的1433端口对应了这台机器SQL Server的数据库端口;另外一种情况是外网IP对应SQLServer机器的端口不是1433;下面是几种解决方案:阅读全文

SQL Server 通过备份文件初始化复制

2013-09-09 11:39 by 听风吹雨, 4964 阅读, 收藏, 编辑
摘要: MySQL在对有历史数据的数据库进行搭建复制(Master/Slave)的时候,可以通过在Master服务器备份历史数据,利用这个备份文件在Slave进行还原;这样做的好处是可以更加快速的搭建好环境,因为可以对备份文件进行压缩、分包,并且可以使用FTP等工具保证传输过程的安全与快捷;详情可参考:Windows下搭建MySQL Master Slave 当SQL Server遇到同样需要对历史数据库搭建复制,通常的做法是在本地发布快照,再由订阅传输数据阅读全文

SQL Server 复制:事务发布

2013-09-06 17:33 by 听风吹雨, 12239 阅读, 收藏, 编辑
摘要: 一、背景 在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程; 二、实现过程 (一) 环境信息 系统环境:Windows Server 2008 + SQL Server 2008 R2阅读全文

SQL Server 维护计划实现数据库备份(策略实战)

2013-08-29 09:08 by 听风吹雨, 9337 阅读, 收藏, 编辑
摘要: 一、背景 之前写过一篇关于备份的文章: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 听风吹雨, 6228 阅读, 收藏, 编辑
摘要: 一、背景 服务器上放了很多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 听风吹雨, 2915 阅读, 收藏, 编辑
摘要: 一、背景我们遇到的问题如下图所示:自动增长无端端就按照这样的比例进行增长;(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 听风吹雨, 44179 阅读, 收藏, 编辑
摘要: 一、背景由于项目开始时候使用的数据库是SQL Server,后来把存储的数据库调整为MySQL,所以需要把SQL Server的数据转移到MySQL;由于涉及的表比较多,所以想在MySQL中生成对应表并导入数据;上网找了些资料,如:将ACCESS和MSSQL导入MYSQL中、MySQL Migration 实现 MSSQL 到 MySQL数据迁移,虽然不知道里面的做法是否可以成功转移,但是里面的过程比较复杂,没有去尝试,后来自己找到了方法,最重要就是简单和准确阅读全文