一、背景
在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在Task数据库中有Basic与Group两个表,需要提供这两个表的部分字段给其它程序读取放入缓存,程序需要比较及时的获取到这些数据,作为DBA你需要从权限和性能控制的角度出发,我采用了SQL Server的事务复制技术和timestamp,下面只讲述事务复制的搭建过程;
二、实现过程
(一) 环境信息
系统环境:Windows Server 2008 + SQL Server 2008 R2
发布服务器:192.168.1.151,服务器名称:USER-H2B2A89PEK
分发服务器:与发布服务器同一台机器
订阅服务器:192.168.1.152,服务器名称:USER-FJMO8L052U
发布数据库:Task
订阅数据库:TaskSiteInfo
数据库帐号:ReplicationUser/ ReplicationPassword
(二) 搭建步骤
A. 发布服务器配置
首先在发布数据库和订阅数据库上创建相同的帐号和密码(ReplicationUser/ ReplicationPassword),并且设置Task数据库的安全对象,设置这样的帐号的目的就是为了和程序连接到数据库的帐号区分开,可以做权限上的控制,方便问题的排查;
--更改安全对象的所有权
ALTER AUTHORIZATION ON DATABASE::[Task] TO [ReplicationUser]
在E盘目录下创建文件夹:E:\ReplData,并设置这个文件夹为共享目录,共享用户为barefootadmin;
(Figure1_1:文件夹权限)
这里需要设置SQL Server Agent登陆帐号为上面文件夹访问用户barefootadmin;
(Figure1_2:SQL Server Agent登陆帐号)
(Figure2:分发服务器)
如果你设置快照文件夹路径为:E:\ReplData,即使你的发布服务器本身就是分发服务器,如果订阅服务器是另外一台机器,那么在请求(Pull)订阅(如果是推送(Push)订阅就没有这个限制)模式下订阅代理是无法访问到这个快照文件的;除非你发布服务器、分发服务器和订阅服务器都是同一台机器;你应该设置快照文件夹路径为:\\USER-H2B2A89PEK\ ReplData;
(Figure3:快照文件夹)
(Figure4:数据库)