我目前无权访问用于开发的SQL服务器集群(其中一个使用集群服务,后面有SAN),但将来会针对实时环境进行访问。
从.NET环境编程时,如果我连接的节点死了,我应该在代码中做什么?故障转移到另一个节点是否完全透明?我是否需要捕获某种异常并尝试重新连接自己?这有代码模式吗?
答案 0 :(得分:3)
故障转移是一个很大的密码断开,它将切断与服务器的所有连接。在备用服务器启动并从共享驱动器恢复数据库之后,您通常可以在几秒到几分钟内重新连接。在故障转移时正在进行的任何事务都将被回滚。
在您的应用程序中,故障转移将是一个无人值守事件,您将丢失所有连接,并且任何重新连接尝试都将失败,直到备用服务器的恢复完成。如果使用正确的事务语义,数据将是正确的,并且编写良好的应用程序将恢复而不会出现问题。如果您没有正确使用事务,那么逻辑半写操作就会出现各种不一致的情况,这些逻辑半写操作没有被事务边界正确保护。
您始终可以在几台虚拟机上测试故障转移。虚拟服务器和HyperV都可以在虚拟硬件上模拟集群(虽然不是虚拟PC),我也希望VMWare能够(尽管我从未尝试过)。