代码之家  ›  专栏  ›  技术社区  ›  Jon

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

  •  0
  • Jon  · 技术社区  · 15 年前

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

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

    它还如何处理INSERT语句正在运行而数据库关闭的情况?是第二天捡起来的还是永远丢了?基于事务的insert语句是否更安全?

    1 回复  |  直到 15 年前
        1
  •  3
  •   Remus Rusanu    15 年前

    每种形式的高可用性(镜像、群集)都有一个事务边界:故障转移时正在运行的每个事务都将回滚。这不是限制,是 特征 . 如果这不是真的,就不可能写出正确的应用程序。

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