故障转移群集故障排除

本主题介绍了下列问题:

  • 故障排除的基本步骤。

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

  • 解决最常见的故障转移群集问题。

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

故障排除的基本步骤

使用 SQL Server 故障转移群集时,请记住,服务器群集是由运行在 Microsoft 群集服务 (MSCS) 下的故障转移群集实例组成的。SQL Server 的实例可能驻留于提供 Microsoft Server 群集的基于 Microsoft MSCS 的节点中。

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

  1. 硬件:查看 Microsoft Windows 系统事件日志。

  2. 操作系统:查看 Windows 系统和应用程序事件日志。

  3. 网络:查看 Windows 系统和应用程序事件日志。根据知识库文章 Recommended Private "Heartbeat" Configuration on a Cluster Server 验证当前配置。

  4. 安全性:查看 Windows 应用程序和安全性事件日志。

  5. MSCS:查看 Windows 系统和应用程序事件日志以及群集日志。

  6. SQL Server:验证硬件、操作系统、网络、安全性和 MSCS 基础均没有问题后,像平常一样进行故障排除。

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

通常,故障转移群集故障有以下两个原因:

  • 双节点群集的一个节点出现硬件故障。此硬件故障可能是由 SCSI 卡或操作系统中的故障造成的。

    若要从此故障中恢复,请使用 SQL Server 安装程序将故障节点从故障转移群集中删除,在计算机脱机的情况下解决硬件故障,重新将计算机联机,然后将修复后的节点添加回故障转移群集实例。

    有关详细信息,请参阅如何创建新的 SQL Server 故障转移群集(安装程序)如何从方案 1 中的故障转移群集故障中恢复

  • 操作系统故障。在这种情况下,节点处于脱机状态,但并非无法解决该故障。

    若要从操作系统故障中恢复,请恢复节点并测试故障转移。如果 SQL Server 实例未能正确地进行故障转移,必须使用 SQL Server 安装程序从故障转移群集中删除 SQL Server,进行必要的修复,重新将计算机联机,然后将修复后的节点添加回故障转移群集实例。

    使用此方法从操作系统故障中恢复可能要花些时间。如果很容易从操作系统故障中恢复,请不要使用此方法。

    有关详细信息,请参阅如何创建新的 SQL Server 故障转移群集(安装程序)如何从方案 2 中的故障转移群集失败中恢复

解决常见问题

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

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

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

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

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

**问题 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 安装程序因发生错误 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 资源

**问题:**由于在 Windows 中未完全配置 Microsoft 分布式事务处理协调器 (MS DTC),因此应用程序可能无法在分布式事务中登记 SQL Server 资源。此问题可能会影响使用分布式事务的链接服务器、分布式查询和远程存储过程。有关如何配置 MS DTC 的详细信息,请参阅安装故障转移群集前的准备工作

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

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

  1. 在控制面板中打开**“管理工具”,然后打开“计算机管理”**。

  2. 在“计算机管理”的左侧面板中,展开**“服务和应用程序”,然后单击“服务”**。

  3. 在“计算机管理”的右侧面板中,右键单击 Distributed Transaction Coordinator,并选择**“属性”**。

  4. 在**“Distributed Transaction Coordinator 的属性”窗口中,单击“常规”选项卡,再单击“停止”**来停止此服务。

  5. 在**“Distributed Transaction Coordinator 的属性”窗口中,单击“登录”**选项卡,将登录帐户设置为 NT AUTHORITY\NetworkService。

  6. 单击**“应用”“确定”以关闭“分布式事务处理协调器”窗口。关闭“计算机管理”窗口。关闭“管理工具”**窗口。

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

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

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