CLUSTER中的SQL Server会话

时间:2013-05-21 17:19:53

标签: asp.net sql-server database session-state nodes

任何人都可以帮助我...

我有一个3节点的sql server集群,比如说N1,N2和N3。三节点集群的名称是SQLCLUS。 应用程序使用连接字符串名称中的名称SQLCLUS连接到数据库。

该应用程序使用SQL Server会话管理。所以我远程桌面到N1(这是活动的,而N2和N3是被动的)和来自locaiton

C:\的Windows \ Microsoft.NET \ Framework64 \ V2.0.50727

我执行了以下命令

aspnet_regsql.exe -S SQLCLUS -E -ssadd -sstype p

命令执行成功。然后我可以登录SQLCLUS并查看使用2个表创建的ASpState数据库。

然后,我测试了使用SQL Server会话的applciation,它也可以正常工作。

现在我的问题是......

  1. 如果故障转移到节点N2或N3,我的应用程序仍然有效吗?我没有从N2执行上述命令(aspnet_regsql.exe)。

  2. 我是否应该在N2和N3中执行命令aspnet_regsql.exe -S SLCLCLUS -E -ssadd -sstype p?

  3. 执行上述命令后,sql server会发生什么变化?我的意思是,是否可以看到任何类型的服务设置更改?

  4. 非常赞赏任何有关此事的评论......

    提前致谢...

      3。

1 个答案:

答案 0 :(得分:2)

Sql Server故障转移群集在概念上可以解释为烟雾和镜像dns hack。用熟悉的术语来思考聚类会让你意识到它真正的技术是多么简单。

Sql Server故障转移群集的简化说明

想象一下,你有两台电脑:SrvA和SrvB

将外部HD(F :)插入SrvA,安装Sql Server并将其配置为将其数据库文件存储在f:\(可执行文件位于C:\ Program Files下)。

拔下HD,将其插入SrvB,安装Sql Server并将其配置为将其数据库文件存储在完全相同的F:\位置。

现在,您创建一个dns别名“MyDbServer”,指向SrvA,将外部HD插回SrvA,然后启动sql server。

直到有一天,当SrvA上的电源出现故障并且机器发生故障时,一切都很好。

要从此灾难中恢复,请执行以下操作:

  1. 将外部驱动器插入SrvB
  2. 在SrvB上启动sql server
  3. 调整“MyDbServer”的dns条目以指向SrvB。
  4. 你现在已经开始使用SrvB了,你的客户端应用程序幸福地意识到SrvA失败了,因为他们只使用名称“MyDbServer”进行连接。

    现实中的故障转移群集

    SrvA和SrvB是群集节点。 外部HD是共享SAN存储。 三步恢复过程是在群集故障转移期间发生的,并由 Windows故障转移群集服务自动管理。

    每个Sql节点需要运行哪些类型的任务?

    您在Sql Server中执行的任务的<99> 99.99%将存储在共享存储上的数据库文件中,因此将在故障转移期间在节点之间移动。这包括创建登录,创建数据库,表上的INSERTS / UPDATES / DELETES,Sql Agent作业以及您能想到的其他所有内容。这还包括aspnet_regsql命令执行的所有任务(从数据库角度来看,它没有任何特殊之处)。

    剩下的 .01%必须在每个节点上完成的事情(因为它们不存储在共享存储上)就像应用Service Pack一样(请记住,可执行文件是在c :),某些注册表设置(一些Sql Server注册表设置是“检查点”和故障转移,有些不是),注册第三方COM dll(没有人真的这样做了)并更改Sql Server在其下运行的服务帐户。

    亲自尝试

    如果要验证不需要在每个节点上运行aspnet_regsql,请尝试故障转移并验证您的应用程序是否仍然有效。如果你确实在每个节点上运行aspnet_regsql并引用了集群名称(SQLCLUS),那么你将有效地覆盖数据库,所以如果它没有错误输出,它就会消灭你现有的数据。