故障转移群集故障排除

更新日期: 2006 年 7 月 17 日

本主题介绍了下列问题:

  • 故障排除的基本步骤。
  • 从故障转移群集故障中恢复。
  • 解决最常见的故障转移群集问题。
  • 使用扩展存储过程和 COM 对象。

故障排除的基本步骤

使用 SQL Server 2005 故障转移群集时,请注意服务器群集是由运行在 Microsoft 群集服务 (MSCS) 下的故障转移群集实例组成的。SQL Server 实例可驻留在基于 Microsoft MSCS 的节点上,而这些节点提供了 Microsoft 服务器群集。

如果服务器群集所驻留的节点存在问题,则这些问题可能将自身列为故障转移群集实例的问题。若要调查并解决这些问题,请按以下顺序对 SQL Server 故障转移群集进行故障排除:

  1. 硬件:查看 Microsoft Windows 系统事件日志。
  2. 操作系统:查看 Windows 系统和应用程序事件日志。
  3. 网络:查看 Windows 系统和应用程序事件日志。请根据知识库文章建议在群集服务器上使用的专用“信号”配置验证当前配置。
  4. 安全性:查看 Windows 应用程序和安全性事件日志。
  5. MSCS:查看 Windows 系统和应用程序事件日志以及群集日志。
  6. SQL Server:验证硬件、操作系统、网络、安全性和 MSCS 基础均没有问题后,像平常一样进行故障排除。

从故障转移群集故障中恢复

故障转移群集故障通常是由以下两个原因之一引起的:

  • 双节点群集的一个节点出现硬件故障。此硬件故障可能是由 SCSI 卡或操作系统中的故障造成的。
    若要从此故障中恢复,请使用 SQL Server 安装程序将故障节点从故障转移群集中删除,在计算机脱机的情况下解决硬件故障,重新将计算机联机,然后将修复后的节点添加回故障转移群集实例。
    有关详细信息,请参阅如何创建新的 SQL Server 2005 故障转移群集(安装)如何从方案 1 中的故障转移群集故障中恢复
  • 操作系统故障。在这种情况下,节点处于脱机状态,但并非无法解决该故障。
    若要从操作系统故障中恢复,请恢复节点并测试故障转移。如果 SQL Server 实例未能正确地进行故障转移,必须使用 SQL Server 安装程序从故障转移群集中删除 SQL Server,进行必要的修复,重新将计算机联机,然后将修复后的节点添加回故障转移群集实例。
    使用此方法从操作系统故障中恢复可能要花些时间。如果很容易从操作系统故障中恢复,请不要使用此方法。
    有关详细信息,请参阅如何创建新的 SQL Server 2005 故障转移群集(安装)如何从方案 2 中的故障转移群集失败中恢复

另外请注意,SQL Server 2005 中对故障转移群集进行了下列更改:

解决常见问题

以下列表介绍了常见的使用问题并说明如何解决这些问题。

问题:不正确地使用命令提示符语法安装 SQL Server 2005

**问题 1:**在命令提示符中使用 /qn 开关时,很难诊断安装程序问题,因为 /qn 开关取消了所有安装程序对话框和错误消息。如果指定 /qn 开关,则所有安装程序消息(包括错误消息)都将写入安装程序日志文件。有关日志文件的详细信息,请参阅如何查看 SQL Server 2005 安装日志文件

解决方法 1:使用 /qb 开关替代 /qn 开关。如果使用 /qb 开关,则将显示每个步骤中的基本 UI(包括错误消息)。

**问题 2:**未遵循 template.ini 文件中使用的格式,该文件位于 SQL Server 2005 安装介质的根目录下。

**解决方法 2:**在安装命令中包含所有必要变量,尽管安装程序可能会忽略不需要的字符。

在命令行中,变量与其值之间不应有空格。例如,“ADDLOCAL=ALL”中没有空格。如果使用“ADDLOCAL = ALL”,则安装程序将失败。再如 IP 及其值。“IP=www.xxx.yyy.zzz,Local Area Connection”是正确的。如果在“,”后插入一个空格,则安装程序将失败。

问题:SQL Server 2005 在迁移到另一个节点后无法登录到网络

**问题 1:**SQL Server 服务帐户无法与域控制器取得联系。

**解决方法 1:**检查事件日志以查看是否存在网络连接问题,例如适配器故障或 DNS 问题。验证是否能成功对域控制器运行 ping 命令。

**问题 2:**所有群集节点上的 SQL Server 服务帐户密码并非全都一致,或者节点没有重新启动从失败的节点迁移过来的 SQL Server 服务。

**解决方法 2:**使用 SQL Server 配置管理器更改 SQL Server 服务帐户密码。如果不这样做,并且更改了其中一个节点上的 SQL Server 服务帐户密码,也必须更改所有其他节点上的密码。SQL Server 配置管理器会自动执行此操作。

问题:SQL Server 无法访问群集磁盘

**问题 1:**并未在所有节点上都更新了固件或驱动程序。

**解决方法 1:**确保所有节点都使用正确的固件版本和相同的驱动程序版本。

**问题 2:**如果失败的节点位于具有不同驱动器号的共享群集磁盘上,则其他节点无法恢复从该节点迁移过来的群集磁盘。

**解决方法 2:**两台服务器上的群集磁盘的磁盘驱动器号必须相同。如果不相同,请检查操作系统和 Microsoft 群集服务 (MSCS) 的原始安装。

问题:SQL Server 服务故障导致故障转移

**解决方法:**若要防止特定服务的故障导致 SQL Server 组进行故障转移,请使用 Windows 中的群集管理器配置这些服务,如下所示:

  • 在**“全文属性”对话框的“高级”选项卡中,清除“影响组”**复选框。但是,如果 SQL Server 导致故障转移,则全文搜索服务将重新启动。

问题:SQL Server 不自动启动

**解决方法:**使用 MSCS 中的群集管理器自动启动某个故障转移群集。SQL Server 服务应该设置为手动启动,应该在 MSCS 中配置群集管理器,使其启动 SQL Server 服务。

问题:网络名称离线,无法使用 TCP/IP 连接到 SQL Server

**问题 1:**DNS 失败,而群集资源设置为需要 DNS。

**解决方法 1:**更正 DNS 问题。

**问题 2:**网络上存在重复的名称。

**解决方法 2:**使用 NBTSTAT 查找重复的名称,然后更正问题。

**问题 3:**SQL Server 不是使用 Named Pipes 进行连接。

**解决方法 3:**若要使用 Named Pipes 进行连接,请使用 SQL Server 配置管理器创建一个别名,以连接到适当的计算机。例如,如果有一个群集包含两个节点(Node ANode B)和一个具有默认实例的故障转移群集实例 (Virtsql),则可以执行下列步骤连接到网络名称资源已离线的服务器:

  1. 使用群集管理器确定包含 SQL Server 实例的组在哪个节点上运行。对于本例,此节点是 Node A
  2. 使用 net start 在该计算机上启动 SQL Server 服务。有关使用 net start 的详细信息,请参阅手动启动 SQL Server
  3. Node A 上启动 SQL Server 配置管理器。查看服务器正在侦听的管道名称。它应类似于 \\.\$$\VIRTSQL\pipe\sql\query。
  4. 在客户端计算机上,启动 SQL Server 配置管理器。
  5. 创建别名 SQLTEST1 以通过命名管道连接到此管道名称。为此,请输入 Node A 作为服务器名称并将管道名称编辑为 \\.\pipe\$$\VIRTSQL\sql\query。
  6. 使用别名 SQLTEST1 作为服务器名称连接此实例。

问题:群集上的 SQL Server 安装程序因发生错误 1058 而失败

**问题:**在群集节点上禁用任务计划程序服务会导致安装程序失败并出现代码为 1058 的错误。core.log 中包含以下一项:

Error: SetTargetComputer on \\machinename failed with
Unable to start service (1058)
Error: RunRemoteProcess Received return code 1058 from STPCOMPAQ3790N2

这是日志的最后一行:

<EndFunc Name='DwLaunchMsiExec' Return='1058' GetLastError='183'>

**解决方法:**使用群集管理器在所有群集节点上都启用任务计划程序服务。有关详细信息,请参阅如何启用 Windows 任务计划程序服务

问题:群集上的 SQL Server 安装程序因发生错误 11001 而失败

问题:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\MSSQL.X\Cluster] 中存在孤立的注册表项

**解决方法:**确保当前未使用 MSSQL.X 注册表配置单元,然后删除该群集项。

问题:群集安装错误:“安装程序没有足够的特权来访问目录 <驱动器号>\Microsoft SQL Server。安装无法继续。请以管理员身份登录,或与您的系统管理员联系”

**问题:**此错误是由于 SCSI 共享驱动器未正确分区而引起的。

**解决方法:**执行下列步骤以在该共享磁盘上重新创建一个分区:

  1. 从群集中删除磁盘资源。
  2. 删除磁盘上的所有分区。
  3. 在磁盘属性中验证磁盘是否为基本磁盘。
  4. 在共享磁盘上创建一个分区、格式化该磁盘并为磁盘分配一个驱动器号。
  5. 使用群集管理器 (cluadmin) 将磁盘添加到群集中。
  6. 运行 SQL Server 安装程序。

问题:应用程序无法在分布式事务处理中登记 SQL Server 2005 资源

**问题:**由于在 Windows 中未完全配置 Microsoft 分布式事务处理协调器 (MS DTC),因此应用程序可能无法在分布式事务中登记 SQL Server 2005 资源。此问题可能会影响使用分布式事务的链接服务器、分布式查询和远程存储过程。

**解决方法:**若要避免此类问题,必须在安装 SQL Server 2005 的服务器上完全启用 MS DTC 服务。

若要完全启用 MS DTC,请执行下列步骤:

  1. 在控制面板中打开**“管理工具”,然后打开“计算机管理”**。
  2. 在“计算机管理”的左侧面板中,展开**“服务和应用程序”,然后单击“服务”**。
  3. 在“计算机管理”的右侧面板中,右键单击 Distributed Transaction Coordinator,并选择**“属性”**。
  4. 在**“Distributed Transaction Coordinator 的属性”窗口中,单击“常规”选项卡,再单击“停止”**来停止此服务。
  5. 在**“Distributed Transaction Coordinator 的属性”窗口中,单击“登录”**选项卡,将登录帐户设置为 NT AUTHORITY\NetworkService。
  6. 单击**“应用”“确定”,关闭“Distributed Transaction Coordinator 的属性”窗口。关闭“计算机管理”窗口。关闭“管理工具”**窗口。
ms189117.note(zh-cn,SQL.90).gif注意:
在故障转移群集内的计算机上安装 SQL Server 2005 时,必须在运行安装程序之前完全启用 MS DTC 并为其设置群集。如果 MS DTC 未设置群集,安装程序将失败。在运行安装程序之前,请使用 Microsoft 群集管理器确保 MS DTC 已设置了群集。

问题:从 CD 安装时,SQL Server 2005 故障转移群集的安装程序可能会失败

**问题:**在 SQL Server 2005 安装期间选择故障转移群集组件和客户端工具组件时,插入 CD 2 后,可能出现“远程安装失败”错误,从而导致安装失败。

**解决方法:**将安装文件从两张 CD 中复制到活动群集节点或网络共享的同一目录下。例如:

c:
cd\
md SQLENT

将两张 CD 复制到 SQLENT 目录:

\SQLENT\Servers

\SQLENT\Tools

ms189117.note(zh-cn,SQL.90).gif注意:
这不是 DVD 安装的问题。

使用扩展存储过程和 COM 对象

如果在故障转移群集配置中使用扩展存储过程,所有扩展存储过程都必须安装在与 SQL Server 相关的群集磁盘中。这样做可确保当某节点发生故障转移时,仍能继续使用扩展存储过程。

如果扩展存储过程使用 COM 组件,管理员必须在群集的所有节点中都注册 COM 组件。活动节点的注册表中必须包含加载和执行 COM 组件所需的信息,才能创建这些组件。否则,这些信息将保留在最先注册 COM 组件的计算机的注册表中。

请参阅

其他资源

如何查看 SQL Server 2005 安装日志文件
How Extended Stored Procedures Work
Execution Characteristics of Extended Stored Procedures

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 7 月 17 日

更改的内容:
  • 添加了有关从 CD 媒体安装失败的部分。