65.9K
CodeProject 正在变化。 阅读更多。
Home

SQL Server 2000 - 合并复制分步过程

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.52/5 (29投票s)

2004年12月17日

9分钟阅读

viewsIcon

332440

SQL Server 2000 合并复制的分步指南。

引言

复制是在不同位置的数据库之间共享数据的过程。通过复制,我们可以创建数据库副本并将其共享给不同的用户,以便他们可以对其本地数据库副本进行更改,然后将这些更改同步到源数据库。

Microsoft SQL Server 复制使用发布者分发者订阅者实体。

发布者是使数据可供其他服务器订阅的服务器。此外,发布者还识别同步过程中订阅者处已更改的数据。发布者包含发布

订阅者是接收和维护已发布数据的服务器。订阅者处的数据修改可以传播回发布者。

分发者是管理数据在复制系统中的流动的服务器。存在两种分发者类型:远程分发者和本地分发者。远程分发者与发布者分离,并配置为复制的分发者。本地分发者是配置为发布者和分发者的服务器。

代理是负责在发布者和订阅者之间复制和分发数据的进程。有不同类型的代理支持不同类型的复制。

文章可以是任何数据库对象,例如表(按列或按行筛选)、视图、索引视图、存储过程和用户定义函数。

发布是文章的集合。

订阅是复制数据或数据库对象的副本的请求。

订阅类型

发布者处对订阅的更改可以通过推送订阅或请求订阅复制到订阅者。通过推送订阅,发布者负责将所有更改同步到订阅者,而无需订阅者请求这些更改。通过请求订阅,订阅者启动复制而不是发布者。

复制类型

Microsoft SQL Server 2000 支持以下复制类型:

  • 快照复制
  • 事务复制
  • 合并复制

快照复制

  • 快照复制也称为静态复制。快照复制按数据和数据库对象在当前时间点的确切样子复制和分发它们。
  • 订阅者会收到完整的修改数据,而不是单个事务,并且不具有连续性。
  • 这种类型主要用于需要复制的数据量较小且数据/数据库对象是静态或不经常更改的情况。

事务复制

  • 事务复制也称为动态复制。在事务复制中,发布者处对发布的修改会增量传播到订阅者。
  • 发布者和订阅者始终保持同步,并且应该始终连接。
  • 这种类型主要用于订阅者始终需要最新数据进行处理的情况。

合并复制

它允许在发布者和订阅者上对复制的数据进行自主更改。通过合并复制,SQL Server 会捕获源数据库和目标数据库中的所有增量数据更改,并根据您配置的规则或使用您创建的自定义解析器来协调冲突。当您希望支持发布者和订阅者上复制数据的自主更改时,合并复制是最佳选择。

合并复制涉及的复制代理是快照代理和合并代理。

如果发布者和订阅服务器不断进行更改,并且最终必须合并这些更改,则实施合并复制。

默认情况下,发布者会赢得与订阅者的所有冲突,因为它具有最高优先级。冲突解析器可以自定义。

执行复制过程之前必须采取的步骤

  1. 在开始复制过程之前,将 MSSQLSERVER 服务的登录帐户更改为“此帐户”。使用任何属于 sysadmin 服务器角色成员的 SQL 登录帐户。请参阅屏幕截图以获取更多信息。不要忘记重新启动 MSSQLSERVER 服务。

  2. 应为发布者、分发和订阅者的数据库分配足够的磁盘空间。
  3. 定义标识列时使用 NOT FOR REPLICATION 选项。

合并复制设置的分步指南

  1. 打开 SQL Server 企业管理器并选择“工具”菜单 -> “复制” -> “配置发布、订阅者和分发…”
    1. 将适当的服务器配置为发布者或分发者。

    2. 为合并复制启用适当的数据库。

    3. 将适当的服务器启用为订阅者。

  2. 打开 SQL Server 企业管理器并选择需要进行复制的相应 SQL Server 组,然后选择“工具”菜单 -> “复制” -> “创建和管理发布”。

  3. 这将打开一个对话框,显示“在相应服务器上创建和管理发布”。选择相应的数据库,然后单击“创建发布”。这将打开“创建发布向导”。只需单击下一步

  4. 它将要求为选定的服务器选择一个分发者。选择“使服务器成为其自己的分发者;SQL Server 将创建一个分发数据库和一个日志”。然后单击下一步

  5. 它将要求提供快照文件夹路径。浏览并选择快照文件夹的适当路径,然后单击下一步

    注意:在发布者机器中创建一个文件夹并共享该文件夹,然后通过您登录的用户授予完全权限。确保您也可以从订阅者机器访问此文件夹。如果无法访问,请在发布者机器中为相应用户授予该共享文件夹的完全权限。快照文件夹应位于发布者机器中。

  6. 选择要发布的数据库,然后单击“下一步”。

  7. 选择发布类型为“合并发布”。

  8. 指定订阅者类型。选择“运行 SQL Server 2000 的服务器”。然后单击下一步

  9. 选择要发布的对象类型(例如表、存储过程和视图),然后单击下一步

  10. 它将显示一些问题,这些问题可能需要在后期进行一些更改才能按预期工作。只需单击下一步

  11. 输入发布名称,然后单击下一步

  12. 它将要求自定义发布的属性。选择“是,我将定义数据筛选器、启用匿名订阅或自定义其他属性”。然后单击下一步

  13. 然后,它会询问“您想如何筛选此发布?”此处不要选择任何内容。只需单击下一步

  14. 然后,它会询问“您是否允许此发布匿名订阅?”选择“否,只允许命名订阅”,然后单击下一步

  15. 它将显示“设置快照代理计划”对话框。根据您的要求更改快照代理计划,然后选择“立即创建第一个快照”。然后单击下一步

  16. 单击“完成”创建发布。

  17. 最后,它会显示“SQL Server 企业管理器已成功从数据库 'db1' 创建发布 'pub1'”。只需单击关闭

  18. 它将显示“在相应服务器上创建和管理发布”对话框。现在转到相应的已创建发布,然后单击“推送新订阅”。

  19. 在进行“推送新订阅”之前,请在发布者机器的 SQL Server 企业管理器中使用 SQL 身份验证模式为订阅者机器创建新的 SQL Server 注册。为此,发布者和订阅者机器中都应该有一个通用的 SQL 登录名。为此用户设置服务器角色为系统管理员、进程管理员和批量插入管理员,并授予对您要执行复制的相应数据库的数据库访问权限。
  20. 转到“推送新订阅”向导。这将打开“推送订阅向导”。只需单击“下一步”。

  21. 从已启用的订阅者中选择一个或多个订阅者,然后单击下一步。(注意:只有在您执行步骤 19 后,它才会在“已启用的订阅者”下显示订阅者的 SQL Server 名称。)

  22. 通过浏览并单击下一步选择订阅(目标)数据库名称。(注意:如果您愿意,可以通过单击新建来创建新数据库)。

  23. “设置合并代理计划”。根据您的要求更改计划,然后单击下一步

  24. 指定订阅是否需要初始化。选择“是,初始化架构和数据”,并选择“立即启动快照代理以开始初始化过程”,然后单击下一步

  25. 将“设置订阅优先级”设置为“解决冲突时使用发布者作为订阅者的代理”,然后单击下一步

  26. 它将显示 SQLSERVERAGENT 服务的状态为“正在运行”。只需单击下一步

  27. 单击完成以完成推送订阅。

  28. 最后,它将显示“已在以下订阅者处成功创建订阅:”。只需单击关闭

  29. 现在,在 SQL Server 企业管理器中,转到相应的 SQL Server 组,然后转到“复制监视器 -> 发布者 -> 相应服务器 -> 发布名称”。在右侧窗格中,您将看到快照代理。只需右键单击并选择“启动代理”。刷新一次。然后右键单击相应的发布名称并选择“开始同步”。它将合并必要的数据。刷新一次。

重要提示

SQL Server 2000 复制不支持全文索引。但是,请在订阅者机器上手动启用全文索引。这可以通过全文索引向导完成。选择适当的表,并启用该表中所需的字段作为全文索引。然后,创建一个新目录或使用现有目录并进行计划(如果需要)。完成此操作后,转到该特定目录并右键单击并选择“开始完全填充”。状态将显示为“正在填充”。

复制的优点

用户通过使用复制过程可以获得以下优点:

  • 在不同地理位置工作的用户可以处理其本地数据副本,从而获得更大的自主性。
  • 数据库复制还可以通过将数据从本地数据库服务器复制到远程数据库服务器来补充您的灾难恢复计划。如果主服务器发生故障,您的应用程序可以切换到数据的复制副本并继续操作。
  • 您可以通过在不同的计算机上保留副本自动备份数据库。与在备份期间阻止用户访问数据库的传统备份方法不同,复制允许您在线继续进行更改。
  • 您可以在其他网络服务器上复制数据库,并重新分配用户以平衡这些服务器上的负载。您还可以为需要持续访问数据库的用户提供他们自己的副本,从而减少总网络流量。
  • 数据库复制将选定的数据库事务记录到一组内部复制管理表中,然后可以将其同步到源数据库。数据库复制不同于文件复制,文件复制本质上是复制文件。

复制性能优化技巧

  • 通过将数据分区分发到不同的订阅者。
  • 在专用服务器上运行 SQL Server 复制时,请考虑将 SQL Server 使用的最小内存量从默认值 0 设置为更接近 SQL Server 通常使用的值。
  • 不要发布超出您需要的数据。尽可能尝试使用行筛选器和列筛选器选项,如上所述。
  • 避免在包含订阅数据的表上创建触发器。
  • 频繁更新的应用程序不适合数据库复制。
  • 为获得最佳性能,请避免在发布中复制包含 TEXTNTEXTIMAGE 数据类型的列。

结论

简而言之,复制是能够可靠地将数据从源数据库复制到一个或多个目标数据库的功能。SQL Server 2000 为您提供了复制设计、实施、监视和管理的能力。这为您提供了分发数据副本和维护分布式数据一致性所需的功能和灵活性。您可以通过 ODBC(开放式数据库连接)或 OLE DB 自动将数据从一个 SQL Server 分发到许多不同的 SQL Server。SQL Server 复制提供更新复制功能,例如立即更新订阅者和合并复制。随着 SQL Server 复制的所有新增强功能,可能的应用程序和业务场景数量惊人。

© . All rights reserved.