为SQL Server群集资源手动重新创建特定于资源的注册表项

本文介绍如何在从群集管理员中删除资源时为SQL Server群集资源手动重新创建特定于资源的注册表项。

原始产品版本:Microsoft SQL Server
原始 KB 编号: 810056

摘要

与 SQL Server 相关的群集资源 (SQL Server、SQL Server 代理和全文搜索) 都包含资源特定的注册表项,这些注册表项必须存在才能使资源联机。 如果从群集管理员中删除资源,可以手动重新创建资源。 这些步骤只能用于添加依赖于SQL Server的资源。 它们不能用于SQL Server依赖的资源。 请参阅本文中的 “详细信息 ”部分,以手动添加资源。 这些步骤假定你之前已使用 SQL Server 安装程序成功安装所有群集文件和组件。 此过程不会描述安装程序在新群集安装中所做的所有文件、修改或注册表项。

更多信息

群集管理员列出的每个资源都有一个注册表项,该注册表项位于 下HKEY_LOCAL_MACHINE (HKLM)HKLM\Cluster\Resources\GUID。 添加资源时会创建一个 GUID,该 GUID 在计算机之间有所不同。 每个键都包含一个 Name 值,该值包含群集管理员显示的资源名称。 在每个资源键下,都有一个 Parameters 子项,资源可在其中存储特定于资源的参数信息。

SQL Server、SQL Server 代理和全文搜索将信息存储在此参数子项中。 如果缺少信息,则尝试使资源联机时,群集日志文件中会记录以下错误:

SQL Server: [sqsrvres] 无法读取“VirtualServerName”属性。 错误: d.
Microsoft 搜索服务实例全文搜索:在实例全文搜索的联机操作期间出错:80070002 - 系统找不到指定的文件。

手动重新创建资源

若要在群集管理员中手动重新创建资源,必须在表示资源的项下添加以下注册表值:

SQL Server

名称:InstanceName
类型:REG_SZ
值:虚拟服务器表示的 SQL Server 实例的名称。 使用 MSSQLSERVER 使用默认实例。

名称:VirtualServerName
类型:REG_SZ
值:分配给服务器的虚拟服务器名称

SQL Server 代理

名称:InstanceName
类型:REG_SZ
值:虚拟服务器表示的 SQL Server 实例的名称。 使用 MSSQLSERVER 使用默认实例。

名称:VirtualServerName
类型:REG_SZ
值:分配给服务器的虚拟服务器名称

名称:ApplicationName
类型:REG_SZ
值:SQL Server$instance_name,其中 instance_name 是要使用的 SQL Server 实例。 若要使用默认实例,请使用 SQLServer

名称:ApplicationPath
类型:REG_SZ
值:包含全文数据文件的文件夹的完整路径。 通常,默认实例在 \MSSQL\FTDATA 中,在命名实例的 MSSQL$instancename\FTDATA 中。

使用 Cluster.exe 实用工具添加注册表项

重要

只能在危急情况下使用此方法。 例如,当无法启动 SQL Server 实例时,可以使用此方法。 但是,可以使用安装程序重新创建虚拟服务器。

可以使用 Cluster.exe 实用工具添加注册表项。 为此,必须在命令提示符下运行类似于以下命令的命令:

cluster res "ResourceName" /priv KeyName = KeyValue:STR

注意

  • 必须将 ResourceName 替换为相应的SQL Server资源、SQL Server 代理资源或 Full-Text 搜索资源的名称。
  • 必须将 KeyName 替换为相应的注册表项名称。 例如,InstanceName 和 VirtualServerName 是注册表项名称。
  • 必须将 KeyValue 替换为键的相应值。 对于 InstanceName 注册表项,可以分配虚拟服务器为键值表示的 SQL Server 实例的名称。 可以使用 MSSQLSERVER 作为默认实例的实例名称。