避免在重新启动期间 Microsoft SQL Server 停机

1 sql-server high-availability sql-server-2016

我们正在运行 SQL Server Standard 2016。有时需要安装 Microsoft 更新并重新启动服务器。

我们被要求研究在重启期间保持数据库可用。

因此,出于性能原因,我们不需要另一个数据库服务器,数据库应该“简单”在常规 Windows 更新的重新启动过程中可用。

在这种情况下,首选设置是什么?

Bre*_*zar 9

如果您有一个正在运行的查询或一个打开的事务,则 SQL Server 无法将该查询或事务移动到另一台服务器上。

当您的 SQL Server 实例(我们称为实例 A)重新启动时:

  1. 正在运行的查询将被中止
  2. 打开的、未提交的事务将被回滚
  3. 新查询将获得连接超时

我们无法修复 #1 和 #2,但我们可以通过几种不同的方式帮助 #3。

如果应用程序需要进行写入,您可以通过使用故障转移群集、Always On 可用性组或数据库镜像等高可用性功能来减少停机时间。这使您可以提前修补备用服务器(实例 B)。当需要修补实例 A 时……您不需要。您只需从实例 A(未修补)到实例 B(已修补)进行故障转移。您的用户会遇到 5-60 秒的短暂中断,具体取决于服务器大小、正在运行的事务、服务器调整等。然后,您可以花时间修补实例 A,假设服务器大小相同,您甚至不需要失败回来。您可以继续在实例 B 上运行,直到下次进行修补。

如果应用程序只需要读取,您可以使用横向扩展功能,例如Always On Availability Groups 上的只读副本。根据您配置 AG 和应用程序的方式,可能需要更改连接字符串,例如指向 AG 侦听器并指定只读意图,而不是单独指定实例 A 的名称。

如果应用程序混合读取和写入,并且您愿意在应用程序端进行一些工作,则可以使用 Stack Overflow 使用的技术在故障转移期间保持在线