除非在端口 1433 上,否则 SQL Server 群集资源不会联机

dba*_*dba 5 sql-server clustering sql-server-2008-r2

2 节点 SQL Server 2008 R2 群集工作正常,直到其中一个资源被删除。我成功地把它加回来了。但是,集群无法联机 SQL 服务,除非它位于 1433 上并且不是我之前使用的端口。以下是应用程序错误日志:

[sqsrvres] checkODBCConnectError: sqlstate = 08001; 本机错误 = 274d;message = [Microsoft][SQL Server Native Client 10.0]在建立与 SQL Server 的连接时发生与网络相关或特定于实例的错误。服务器未找到或无法访问。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。

服务状态变为在线待处理,一段时间后变为离线。使用 SQL 配置管理器,我恢复到 1433,它再次正常工作。

我曾尝试禁用仲裁的检查点(如何将 SQL Server 命名实例的动态端口更改为 SQL Server 2005 群集中的静态端口)但没有任何作用,除非我使用具有旧端口号的别名。

我在这里错过了什么吗?

Jas*_*and 2

默认实例安装(实例名称为 MSSQLSERVER,端口为 1433)将禁用 SQL Browser 服务,因为假定为 1433。在集群 SQL 安装中,集群服务将尝试连接到实例并运行“select @@servername”以显示服务器已启动,但由于它是默认实例,因此默认情况下它会尝试使用 1433。我尝试在更改端口后重新启用 SQL 浏览器服务,以便进行实例:端口的映射,但没有任何运气。

您可以尝试使用默认安装的虚拟 SQL 名称(网络名称)在每个节点上设置客户端别名(使用 SQL Server 配置管理器),然后将端口号放入别名中,以便 SQLVIRTUAL 指向SQLVIRTUAL、3876 或您尝试更改为的任何端口。这样,当集群服务尝试轮询实例以查看其是否在 1433 上启动时,它将通过别名重定向到实际端口。您将无法为此使用动态端口。