在群集环境中配置 Integration Services

新建日期: 2007 年 9 月 15 日

Integration Services 服务不是群集服务,也不能识别群集,它不支持从一个群集节点向另一个群集节点进行故障转移。因此,在群集环境中,应在群集中的每个节点上安装 Integration Services 并作为独立的服务启动。

ms345193.note(zh-cn,SQL.90).gif重要提示:
Microsoft 不建议将 Integration Services 服务配置为群集资源。

虽然 Integration Services 服务不是群集服务,但您可以在群集的每个节点上分别安装了 Integration Services 之后,手动将该服务配置为作为群集资源运行。对于那些认为这种配置的优点大于其缺点的客户,本主题包含了将该服务配置为群集资源的说明。

但是,如果您在建立群集硬件环境时以高可用性为目标,则可以在不将 Integration Services 服务配置为群集资源的情况下实现此目标。若要在群集中的任意节点上管理您的包,可以修改群集中每个节点上的 Integration Services 服务的配置文件。您可以修改其中的每个配置文件以指向存储了包的所有可用 SQL Server 实例。该解决方案提供了多数客户所需的高可用性,而不会遇到将 Integration Services 服务配置为群集资源时可能发生的潜在问题。有关如何更改配置文件的详细信息,请参阅配置 Integration Services 服务

了解 Integration Services 服务的角色

了解 Integration Services 服务的角色对于正确决定如何在群集环境中配置该服务具有重要意义。

Integration Services 服务支持 SQL Server Management Studio 中用于列出、启动、停止、监视、导入和导出 Integration Services 包的管理界面。设计包时不需要 Integration Services 服务。运行包以及计划运行包的 SQL Server 代理作业时也不需要 Integration Services 服务。

下面是即使在 Integration Services 服务未运行时也能完成的某些任务:

  • 在 Business Intelligence Development Studio 中设计和运行包。
  • 使用 dtexec 命令提示符实用工具 (dtexec.exe)、执行包实用工具 (dtexecui.exe)、SQL Server 代理或 SQL Server 导入和导出向导来运行包。
  • 使用 Transact-SQL 查询列出存储在 msdb 数据库中的包,以及使用 Windows 资源管理器列出存储在文件系统中的包。
  • 创建和运行 SQL Server 代理作业与维护计划。

了解将 Integration Services 配置为群集资源的缺点

将 Integration Services 服务配置为群集资源的某些潜在缺点包括:

  • 当发生故障转移时,正在运行的包不会重新启动。您可以通过从检查点重新启动包来从包故障中进行恢复。可以从检查点重新启动而不必将该服务配置为群集资源。有关详细信息,请参阅在包中使用检查点
  • 当您在不同于 SQL Server 的资源组中配置 Integration Services 服务时,不能从客户机中使用 Management Studio 来管理存储在 msdb 数据库中的包。Integration Services 服务无法在这种双跃点情况下委托凭据。
  • 如果您有多个 SQL Server 资源组并且它们将 Integration Services 服务包含在群集中,则故障转移可能会导致意想不到的结果。请考虑以下情况:运行在节点 A 上的组 1 包含 SQL Server 服务和 Integration Services 服务。运行在节点 B 上的组 2 也包含 SQL Server 服务和 Integration Services 服务。组 2 故障转移到节点 A。在节点 A 上启动另一个 Integration Services 服务的尝试将失败,因为 Integration Services 服务是单实例服务。尝试故障转移到节点 A 的 SQL Server 服务是否也失败取决于组 2 中 Integration Services 服务的配置。如果 Integration Services 服务配置为影响资源组中的其他服务,那么,由于 Integration Services 服务失败,因此正在故障转移的 SQL Server 服务也将失败。如果该服务配置为不影响资源组中的其他服务,则 SQL Server 服务将能够故障转移到节点 A。

将 Integration Services 服务配置为群集资源

对于那些认为将 Integration Services 服务配置为群集资源的优点大于其缺点的客户,本部分包含了必要的配置说明。但是,Microsoft 不建议将 Integration Services 服务配置为群集资源。

若要将 Integration Services 服务配置为群集资源,必须遵循以下步骤:

  • 在群集上安装 Integration Services。
  • 将 Integration Services 配置为群集资源。
  • 配置 Integration Services 服务和包存储区。
  • 将 Integration Services 服务作为群集资源联机。

在群集上安装 Integration Services

若要在群集上安装 Integration Services,必须在群集中的每个节点上安装 Integration Services。

在群集上安装 Integration Services

  1. 安装并配置具有一个或更多节点的群集。

  2. (可选)安装群集服务,例如 SQL Server 数据库引擎。

  3. 在群集的每个节点上安装 Integration Services。

将 Integration Services 配置为群集资源

在群集中的每个节点上安装了 Integration Services 后,必须将 Integration Services 配置为群集资源。将 Integration Services 服务配置为群集资源时,可以将该服务添加到与 SQL Server 数据库引擎所在组相同的资源组中,也可以添加到不同的组中。下表说明了选择资源组时可能存在的优缺点。

Integration Services 与 SQL Server 位于相同的资源组 Integration Services 与 SQL Server 位于不同的资源组

客户机可以使用 SQL Server Management Studio 管理存储在 msdb 数据库中的包,因为 SQL Server 数据库引擎 和 Integration Services 服务都在相同的虚拟服务器上运行。该配置避免了双跃点情况下的委托问题。

客户机不能使用 SQL Server Management Studio 管理存储在 msdb 数据库中的包。客户端可以连接到运行 Integration Services 服务的虚拟服务器。但是,该计算机不能将用户的凭据委托给运行 SQL Server 的虚拟服务器。这种情况称为双跃点。

Integration Services 服务与其他 SQL Server 服务争用 CPU 和其他计算机资源。

Integration Services 服务不与其他 SQL Server 服务争用 CPU 和其他计算机资源,因为在不同节点上配置了不同的资源组。

msdb 数据库加载和保存包的速度较快,生成的网络通信流量较少,因为这两个服务都在相同的计算机上运行。

msdb 数据库加载和保存包的速度可能较慢,生成的网络通信流量较多。

这两个服务会同时联机或脱机。

当 SQL Server 数据库引擎脱机时,Integration Services 服务可能联机。因此,存储在 SQL Server 数据库引擎的 msdb 数据库中的包不可用。

必要时,无法将 Integration Services 服务迅速移到另一个节点。

必要时,可以将 Integration Services 服务迅速移到另一个节点。

决定了要将 Integration Services 添加到哪个资源组后,必须在该组中将 Integration Services 配置为群集资源。

将 Integration Services 配置为群集资源

  1. 打开**“群集管理器”**。

  2. 在控制台树中选择 Groups 文件夹。

  3. 在结果窗格中,选择计划添加 Integration Services 的组:

    • 若要将 Integrations Services 作为群集资源添加到与 SQL Server 所在组相同的资源组中,请选择 SQL Server 所属的组。
    • 若要将 Integrations Services 作为群集资源添加到与 SQL Server 所在组不同的组中,请选择 SQL Server 所属组以外的其他组。
  4. 在**“文件”菜单上,指向“新建”,再单击“资源”**。

  5. 在“资源向导”的**“新资源”页上,键入名称并选择“一般服务”作为“服务类型”。不要更改“组”的值。单击“下一步”**。

  6. 在**“可能的所有者”页上,将群集的节点作为可能的资源所有者来添加或删除。单击“下一步”**。

  7. 若要在**“依赖关系”页中添加依赖关系,请选择“可用资源”下的资源,然后单击“添加”。发生故障转移时,SQL Server 和存储 Integration Services 包的共享磁盘应在 Integration Services 联机前重新联机。在选择依赖关系之后,单击“下一步”**。

  8. 在**“一般服务参数”页上,输入 MsDtsServer 作为服务名。单击“下一步”**。

  9. 在**“注册表复制”页上单击“添加”**,以添加可为 Integration Services 服务标识配置文件位置的注册表项。该文件所在的共享磁盘必须与 Integration Services 服务位于相同的资源组中。

  10. 在**“注册表项”对话框中,键入 SOFTWARE\Microsoft\MSDTS\ServiceConfigFile。单击“确定”,然后单击“完成”**。

  11. Integration Services 服务现已添加为群集资源。

配置 Integration Services 服务和包存储区

将 Integration Services 配置为群集资源后,必须为群集中每个节点上的 Integration Services 服务修改配置文件的位置和内容。这些修改使配置文件和包存储区在发生故障转移时可用于所有节点。修改了配置文件的位置和内容后,必须将服务联机。

配置 Integration Services 服务和包存储区

  1. 在 %ProgramFiles%\Microsoft SQL Server\90\DTS\Binn\MsDtsSrvr.ini.xml 处找到该配置文件。将该文件复制到已添加 Integration Services 服务的组的共享磁盘上。

  2. 在共享磁盘上新建一个名为 Packages 的文件夹作为包存储区。为适当的用户和组授予此新文件夹的查看文件夹权限和写入权限。

  3. 在文本编辑器或 XML 编辑器中打开共享磁盘上的配置文件。将 ServerName 元素的值更改为相同资源组中的虚拟 SQL Server 的名称。

  4. StorePath 元素的值更改为上一步骤中在共享磁盘上所创建的 Packages 文件夹的完全限定路径。

  5. 将注册表中 **HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\**MSDTS\ServiceConfigFile 的值更新为共享磁盘上的服务配置文件的完全限定路径和文件名。

将 Integration Services 服务联机

  • 在**“群集管理器”中选择 Integration Services 服务,单击右键,然后在弹出菜单中选择“联机”**。Integration Services 服务现已作为群集资源联机。

在群集环境中连接 Integration Services

在群集或任何服务器上配置 Integration Services 服务后,可能需要配置 DCOM 权限才能从客户机连接到该服务。有关详细信息,请参阅连接到远程 Integration Services 服务器

Integration Services 服务不能委托凭据。因此,在下列情况下,不能使用 Management Studio 管理存储在 msdb 数据库中的包:

  • Integration Services 服务和 SQL Server 分别运行在不同的服务器或虚拟服务器上。
  • 运行 SQL Server Management Studio 的客户端是第三台计算机。

客户端可以连接到运行 Integration Services 服务的虚拟服务器。但是,该计算机不能将用户的凭据委托给运行 SQL Server 的虚拟服务器。这种情况称为双跃点。