SQL Server复制:事务发布2014-08-02 听风吹雨 一、背景在复制的运用场景中,事务发布是使用最为广泛的,我遇到这样一个场景:在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:数据库)