复制前要做好的预备任务:
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日志读取器 ]
上面蓝色