SQL Server如何在insert语句中处理网络故障转移

时间:2010-11-16 08:38:21

标签: c# sql-server sql-server-2008 ado.net

我正在编写一个实时对数据库执行sql查询的应用程序。

如果我设置了SQL Server的镜像并在连接字符串中设置了FailoverPartner,并且如果主数据库发生故障,那么辅助是否会自动启动,因此我不必重新打开连接或清除任何内容?

此外,它如何处理INSERT语句正在运行且数据库出现故障的情况? secodary是捡起它还是永远丢失?做基于事务的插入语句会更安全吗?

1 个答案:

答案 0 :(得分:3)

每种形式的高可用性(镜像,群集)都将具有事务边界:故障转移时每个正在进行的事务都将回滚。这不是限制,是功能。如果不是这样,就不可能编写正确的应用程序。

发生故障转移时,将切断使用数据库的每个连接。客户端必须使用新主体重新建立新连接,从数据库中再次读取当前状态并开始在当前状态下应用新操作。正确编写的应用程序(即事务性)对此不会有任何问题。只有编码不佳的应用才会丢失数据。