上一篇: 一步步教你配置SQL SERVER合并复制(六)配置Publisher(下)
现在要确保在第二篇所配置的域用户拥有访问这个
Publication的权限,因此我们要把这个用户加入到
SQL SERVER的用户组并能管理发布这个
Publication.打开我们的
SQL SERVER,展开
Security文件夹然后右击
Logins选择
New Login...
在
Login-New这个页面中,将第二篇所配置好的
SYNCDOMAIN\syncuser用户填入
Login name文本框中。
在右边的
Select a page的导航栏中选择
User Mapping,选上
ParkSurvey数据库,然后点击
OK。
回到
SQL SERVER的资源管理器来,展开
Replication和
Local Publications文件夹,右击我们刚刚发布的Publication=>
ParkSurvey:ParkSurveyPublication然后选择
Properties.
在
Publication Properties这个页面中,我们可以看到我们在新建
Publication时做的每项选择,如果你想修改它们,你也可以在这里直接修改它们,而不用在新建一个
Publication.
在
Select a page导航栏中我们选择
Publication Access List,在右边就可以显示拥有权限建立同步快照的用户。
点击
Add打开
Add Publication Access这个页面,只有刚刚上面的配置的映射到这个
Publication的用户才会被显示出来。点击
OK将其加入到列表当中来。
回到
Publication Properties这个页面,在
Select a page导航页面中我们选择
Subscription Options,在这里我要你将
Limit concurrent processes设置成
True,然后还需要将
Maximun concurrent processes属性值设置成10.为什么要这么设置呢?因为假如你拥有成千上万个订阅者,当他们同时同步数据库服务器时,服务器很大的可能会挂掉。当我们设置成如上的值之后,当我们的合并复制的客户端超过10个的时候,超出的部分将会自动排成一个队列等待其他订阅者完成订阅。当然了这个值不一定要设置成10,您可以测试您的服务器,慢慢增大同时同步服务器数据库的订阅者的数量,得到一个最佳的平衡点。
在
Select a page导航栏的最后一项
Data Partitions,当订阅者试图同步数据时,这里会自动列出这些快照信息。当订阅者发送不同的
HOSTNAME的值去同步不同的数据时,这些信息将帮助我们改进减少初始数据同步时间。
最后我们来看下
Select a page上的
Filter Rows,在这里我们只创建了一个带一个参数过滤的Cities表以及与其通过CityId连接的Parks表,但其实我还有一张Survey表需要这么做,这张表有个特别之处就是我并不想让订阅者修改它的数据,只愿意让订阅者同步它的数据,用过滤条件的话该怎么做呢?
点击
Add按钮,然后选择
Add Filter...在
Add Filter页面,在下拉框中我们选择
Survey表,在
Filter statement文本框中我们输入过滤条件
0=1,这或许是个最简单的方法去创建一个只供复制不提供合并的表了。
点击
OK,然后我们就可以将Survey表加入到了
Filtered Tables列表中来了,点击选择它,你会在
Filter的文本框中看到
Where 0=1.
到这里为止,我们几乎遍历
ParkSurveyPublication的每个属性,我想你一定对它们有了一定的了解当你点击
OK按钮提交所有的更改的时候。当你提交的改变被保存时页面回出现一个提示框问你是否产生一个新的快照,点击
YES.
如果上面的操作未能产生一个新的快照,你可以在
ParkSurveyPublication上点击右键选择
View Snapshot Agent Status,这里你可以点击开始创建快照,也可以点击
Stop结束创建快照,还可以点击
Monitor来监视
Publication的运行情况,状态栏会实时响应点击这些按钮后所发生的动作.
点击
Monitor来启动
Replication Monitor如下图所示.
这个工具将会显示
Park Survey Publication所显示的被订阅情况,从上面的这个界面就可以看得出这个
Publication被订阅的次数(一行代表一个订阅),还可以看出订阅者同步的方式,同步所花费的时间等。也只有合并复制才有提供功能这么丰富的工具,在其他的用
RDA,
Web Service,
DataSet等构建的系统是找不到这样的工具的。
检查是否已建立Publication
如果你已经成功建立Publication,你将会在你发布复制的数据库看到下面这些表,这里例子中是 ParkSurvey|Tables|System Tables:
•MSmerge_contents
•MSmerge_current_partition_mappings
•MSmerge_generation_partition_mappings
•MSmerge_genhistory
•MSmerge_past_partition_mappings
•MSmerge_tombstone
•MSmerge_indentity_range(如果你有使用自动增长列的情况下)
•MSmerge_conflicts_info
你可以手动rebulid这些表的索引,右键单击Indexes,选择Rebuild All,然后点击OK,我的建议是一周执行这种操作一次,这样子的话,你可以新建一个SQL SERVER Job来执行这项操作。
到此为止,如果你已经配置上了SQL SERVER Mobile Tools,你就可以使用这个复制了。祝你愉快,下一篇是.NET Compact Framework是怎么使用这个复制的。