为SQL Server群集开发

时间:2009-07-02 09:15:58

标签: sql-server cluster-computing

如果我正在开发一个可以使用SQL Server群集的环境,那么我应该注意什么(如果有的话)?

从我所看到的,我应该处理数据库操作的异常,并有两个选项:

  • 向用户显示“重试”。到用户重试时,故障转移节点应该已经启动。
  • 等待几秒钟,然后重试,而不通知用户。

这是对的吗?这就是我需要做的全部吗?

这是一个ASP.NET应用程序,但我认为这不会对该方法产生巨大影响。

任何建议都将不胜感激

邓肯

1 个答案:

答案 0 :(得分:3)

只需重试连接即可。当一个实例处于故障转移的中间并且我们的应用程序打开了一个连接时,会发生以下情况:

  1. 连接正常
  2. SQLException:“将请求发送到服务器时发生了传输级错误。(提供程序:TCP提供程序,错误:0 - 远程主机强行关闭现有连接。)”
  3. SQLException:“建立与SQL Server的连接时发生与网络相关或特定于实例的错误。未找到服务器或无法访问服务器。验证实例名称是否正确以及SQL Server是否配置为允许远程连接。(提供者:TCP提供者,错误:0 - 无法建立连接,因为目标计算机主动拒绝它。)“
  4. 将重复步骤3中的消息,直到故障转移完成。
  5. 重新连接成功。
  6. 在这种情况下,您只需要尝试重试连接。如果您的SQL服务器通常响应很快,您可以尝试将连接代码包装在数据库调用超过30秒后的类中,但在类中,使用较短的超时并重试几次。这将使您的应用程序只在一次调用时生成,并允许内部连接时间在需要时进行故障转移。

    网络名称和IP地址的转换是无缝的,因此如果发生故障转移,您无需进行任何特殊的恢复 - 只需重新连接并保持快速。但请记住,任何进程内事务都将被回滚,因此如果在发生断开连接时有任何正在运行的事情,则需要在新节点上重新提交它。