日期:2013-01-06  浏览次数:20515 次

复制前要做好的预备任务:

  1.发布服务器,订阅服务器都创建一个同名的windows用户,并设置相反的密码,做为发布快照文件夹的无效访问用户
  我的电脑
  控制面板
  管理工具
  计算机管理
  用户和组
  右键用户
  新建用户
  建立一个隶属于administrator组的登陆windows的用户

  2.在发布服务器上,新建一个共享目录,做为发布的快照文件的存放目录,操作:

  我的电脑
  D:\ 新建一个目录,名为: PUB
  右键这个新建的目录
  属性  共享
  选择"共享该文件夹"
  通过"权限"按纽来设置具体的用户权限,保证第一步中创建的用户具有对该文件夹的所有权限
  确定


  3.设置SQL代理(SQLSERVERAGENT)服务的启动用户(发布/订阅服务器均做此设置)

  开始  程序  管理工具  服务
  右键SQLSERVERAGENT
  属性  登陆  选择"此账户"
  输入或者选择第一步中创建的windows登录用户名
  "密码"中输入该用户的密码

  4.设置SQL Server身份验证模式,处理连接时的权限问题(发布/订阅服务器均做此设置)

  企业管理器
  右键SQL实例  属性
  安全性  身份验证
  选择"SQL Server 和 Windows"
  确定

  5.在发布服务器和订阅服务器上互相注册
  企业管理器
  右键SQL Server组
  新建SQL Server注册...
  下一步  可用的服务器中,输入你要注册的近程服务器名  添加
  下一步  连接使用,选择第二个"SQL Server身份验证"
  下一步  输入用户名和密码
  下一步  选择SQL Server组,也可以创建一个新组
  下一步  完成

  6.对于只能用IP,不能用计算机名的,为其注册服务器别名
  (在连接端配置,比如,在订阅服务器上配置的话,服务器名称中输入的是发布服务器的IP)
  开始  程序  Microsoft SQL Server  客户端网络实用工具
  别名  添加
  网络库选择"tcp/ip"  服务器别名输入SQL服务器名
  连接参数  服务器名称中输入SQL服务器ip地址
  如果你修正了SQL的端口,取消选择"动态决定端口",并输入对应的端口号


  SQL数据库同步复制

  一、建立发布和分发服务器

[欢迎使用配置发布和分发导游]->[选择分发服务器]

->[使"@servername"成为它本人的分发服务器,SQL Server将创建分发数据库和日志]

->[制定快照文件夹]-> [自定义配置] -> [否,使用下列的默认配置] -> [完成]

上述步骤完成后, 会在当前"@servername" SQL Server数据库里建立了一个distribion库和

一个distributor_admin管理员级别的用户(我们可以任意修正密码)

服务器上新添加了四个作业:
[ 代理程序历史记录清除: distribution ]
[ 分发清除: distribution ]
[ 复制代理程序检查 ]
[ 重新初始化存在数据验证失败的订阅 ]

SQL Server企业管理器里多了一个复制监视器, 当前的这台机器就可以发布、分发、订阅了。

我们再次在SQL Server企业管理器里[复制]-> 右键选择
->[配置发布、订阅服务器和分发],可以看到类似下图:



我们可以在 [发布服务器和分发服务器的属性] 窗口
-> [发布服务器] -> [新增] -> [确定]
-> [发布数据库] -> [事务]/[合并] -> [确定]
-> [订阅服务器] -> [新增] -> [确定]
把网络上的其它SQL Server服务器添加成为发布或者订阅服务器.
新增一台发布服务器的选项:

我这里新建立的JIN001发布服务器是用管理员级别的数据库用户test连接的,
到发布服务器的管理链接要输入密码的可选框, 默认的是选中的,
在新建的JIN001发布服务器上建立和分发服务器FENGYU/FENGYU的链接的时需求输入distributor_admin用户的密码
到发布服务器的管理链接要输入密码的可选框,也可以不选,
也就是不需求密码来建立发布到分发服务器的链接(这当然欠缺安全,在测试环境下可以使用)

二、新建立的网络上另一台发布服务器(例如JIN001)选择分发服务器

[欢迎使用配置发布和分发导游]->[选择分发服务器]

-> 使用下列服务器(选定的服务器必须已配置为分发服务器) -> [选定服务器](例如FENGYU/FENGYU)

-> [下一步] -> [输入分发服务器(例如FENGYU/FENGYU)的distributor_admin用户的密码两次]

-> [下一步] -> [自定义配置] -> [否,使用下列的默认配置]

-> [下一步] -> [完成] -> [确定]

建立一个数据库复制发布的过程:

[复制] -> [发布内容] -> 右键选择 -> [新建发布]

-> [下一步] -> [选择发布数据库] -> [选中一个待发布的数据库]

-> [下一步] -> [选择发布类型] -> [事务发布]/[合并发布]
-> [下一步] -> [指定订阅服务器的类型] -> [运转SQL Server 2000的服务器]

-> [下一步] -> [指定项目] -> [在事务发布中只可以发布带主键的表] -> [选中一个有主键的待发布的表]

->[在合并发布中会给表添加独一性索引和 ROWGUIDCOL 属性的独一标识符字段[rowguid],默认值是newid()]

(添加新列将: 导致不带列列表的 INSERT 语句失败,添加表的大小,添加生成第一个快照所要求的时间)

->[选中一个待发布的表]

-> [下一步] -> [选择发布名称和描述] ->

-> [下一步] -> [自定义发布的属性] -> [否,依据指定方式创建发布]

-> [下一步] -> [完成] -> [关闭]

发布属性里有很多有用的选项:设定订阅到期(例如24小时)

设定发布表的项目属性:

常规窗口可以指定发布目的表的名称,可以跟原来的表名称不一样。

下图是命令和快照窗口的栏目

( SQL Server 数据库复制技术实际上是用insert,update,delete操作在订阅服务器上重做发布服务器上的事务操作

看文档材料需求把发布数据库设成完全恢复模式,事务才不会丢失

但我本人在测试中发现发布数据库是简单恢复模式下,每10秒生成一些大事务,10分钟后再收缩数据库日志,
这期间发布和订阅服务器上的作业都暂停,暂停恢复后并没有丢失任何事务更改 )

发布表可以做数据筛选,例如只选择表里面的部分列:

例如只选择表里某些符合条件的记录, 我们可以手工编写筛选的SQL语句:

发布表的订阅选项,并可以建立强制定阅:


成功建立了发布当前,发布服务器上新添加了一个作业: [ 失效订阅清除 ]

分发服务器上新添加了两个作业:
[ JIN001-dack-dack-5 ] 类型[ REPL快照 ]
[ JIN001-dack-3 ] 类型[ REPL日志读取器 ]

上面蓝色