第 1 课:使用合并复制发布数据
在本课中,您将使用 SQL Server Management Studio 创建合并复制以在 AdventureWorks2008R2 示例数据库中发布 Employee、SalesOrderHeader 和 SalesOrderDetail 表的子集。这些表用参数化行筛选器进行筛选,以便每个订阅都包含唯一的数据分区。您还要将合并代理使用的 SQL Server 登录名添加到发布访问列表 (PAL) 中。本教程要求您完成上一个教程准备服务器以进行复制的学习。
创建发布和定义项目
在 SQL Server Management Studio 中连接到发布服务器,然后展开服务器节点。
展开**“复制”文件夹,右键单击“本地发布”,再单击“新建发布”**。
将启动发布配置向导。
在“发布数据库”页上,选择 AdventureWorks2008R2,然后单击**“下一步”**。
在“发布类型”页上,选择**“合并发布”,然后单击“下一步”**。
在“订阅服务器类型”页上,确保仅选中了 SQL Server 2008,然后单击**“下一步”**。
在“项目”页上,展开**“表”节点,选择 SalesOrderHeader 和 SalesOrderDetail,然后展开 Employee,选择 BusinessEntityID 或 LoginID,然后单击“下一步”**。
在“筛选表行”页上,单击**“添加”,然后单击“添加筛选器”**。
在**“添加筛选器”对话框的“选择要筛选的表”**中,选择 Employee (HumanResources),单击 LoginID 列,再单击向右箭头以将此列添加到筛选查询的 WHERE 子句中,并将 WHERE 子句修改如下:
WHERE [LoginID] = HOST_NAME()
单击**“此表中的行将仅转到一个订阅”,再单击“确定”**。
在“筛选表行”页上,单击 Employee,再单击**“添加”,然后单击“添加联接以扩展所选筛选器”**。
在**“添加联接”对话框的“联接的表”下,选择 Sales.SalesOrderHeader,然后单击“手动编写联接语句”**,将联接语句完成如下:
ON Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID
在**“指定联接选项”中,选择“唯一键”,然后单击“确定”**。
在“筛选表行”页上,单击 SalesOrderHeader,再单击**“添加”,然后单击“添加联接以扩展所选筛选器”**。
在**“添加联接”对话框的“联接的表”下,选择 Sales.SalesOrderDetail,单击“确定”,然后单击“下一步”**。
选中**“立即创建快照”,清除“计划在以下时间运行快照代理”,然后单击“下一步”**。
在“代理安全性”页上,单击**“安全设置”,在“进程帐户”框中输入 <Machine_Name>\repl_snapshot,为此帐户提供密码,然后单击“确定”。单击“完成”**。
在“完成该向导”页的**“发布名称”框中,输入 AdvWorksSalesOrdersMerge,然后单击“完成”**。
创建发布后,单击**“关闭”**。
查看快照的生成状态
在 SQL Server Management Studio 中连接到发布服务器,然后依次展开服务器节点和**“复制”**文件夹。
在“本地发布”文件夹中,右键单击 AdvWorksSalesOrdersMerge,再单击**“查看快照代理状态”**。
将显示该发布的快照代理作业的当前状态。继续下一课之前,请确保快照作业已成功完成。
将合并代理登录名添加到 PAL
在 SQL Server Management Studio 中连接到发布服务器,然后依次展开服务器节点和**“复制”**文件夹。
在“本地发布”文件夹中,右键单击 AdvWorksSalesOrdersMerge,再单击**“属性”**。
将显示**“发布属性”**对话框。
选择**“发布访问列表”页,单击“添加”**。
在“添加发布访问项”对话框中,选择 <Machine_Name>\repl_merge,单击**“确定”。单击“确定”**。