要安全地重新启动托管 Microsoft SQL Server 的计算机,需要执行哪些步骤?

Jon*_*des 27 sql-server best-practices shutdown

在重新启动承载 MS SQL Server 实例的服务器时,是否需要采取任何特殊步骤来防止数据损坏?

比如最近遇到了手动停止SQL服务的建议。我的理解是,这是由 Windowsshutdown进程处理的。

我敢肯定,个人可能会推荐无数个步骤,就像我刚刚提到的那样,但我想避免重复过时或迷信的做法。Microsoft 或广泛的行业标准是否有任何建议?


这个问题与重启机器的短期程序有关。还有另一个问题是关于在永久关闭机器之前确保机器未被使用的长期程序。

Kin*_*hah 16

当您重新启动 sql server 时,您不必花哨/担心或害怕。

只要确保您没有任何长时间运行的事务。最好是在低/最低活动期间使用控制台或关闭命令重新启动 sql server,也称为维护窗口,以尽量减少对您的业务的影响。

如果您有任何 DR 设置并且您不想停机,那么最好进行故障转移,然后重新启动被动或辅助节点。

干净关闭 SQL Server 发生在以下情况:

  • 使用服务控制台停止 sql server。
  • 关闭你的服务器
  • 在 SSMS 中运行 SHUTDOWN 命令

在上述所有情况下,sql server 干净地关闭其所有数据库,然后终止涉及提交或回滚所有事务、将所有脏页写入磁盘然后将条目写入事务日志的服务。

sql server 不正确关闭:

  • 用 nowait 关闭
  • 从您的服务器上拔下电源线(如果您可以访问)。
  • 从任务管理器中杀死sqlserver.exe
  • sql server 二进制文件、exe、系统数据库所在的驱动器故障或 windows 系统驱动器故障.. 通常是 C:\ 驱动器。
  • 服务器过热导致它关闭(应该很少发生!!)

SQL Server 将始终尝试完全关闭……除非您执行了上述不正确的操作

关于恢复阶段幕后发生的事情的一些非常好的阅读链接:


Eva*_*oll 5

这一切都在本页上详尽无遗。

由于您的问题专门询问“微软是否有任何推荐”,我倾向于认为在这里进行讨论会适得其反。文章他们详细介绍了这个过程

  • 使用任一
    • 命令行
    • 电源外壳,
    • SQL Server 管理工作室 (GUI)
  • 2008 年、2012 年、2014 年、2016 年。
  • 对于任一
    • 数据库引擎
    • 或者,代理

这些步骤是否令人满意是我的意见,你不想要。因此,正确答案将始终是最新的。

在断电之前停止服务

在关闭恰好运行 SQL 服务的服务器之前是否有必要或建议这样做。

不,这是没有必要的。当 Windows 内核向 SQL Server 发送关闭信号时,它将以安全的方式执行此操作,并且系统将等待它完成。一般而言,任何具有安全关闭功能的构建都不必手动关闭,并且所有 Microsoft 应用程序都遵循其自己的 API 和PRESHUTDOWN、 或SHUTDOWN阶段相关的程序。从文档开始PRESHUTDOWN,我假设他们正在使用,

通知服务系统将关闭。需要额外时间来执行清理任务超出系统关闭时的严格时间限制的服务可以使用此通知。服务控制管理器将此通知发送给已注册它的应用程序,然后再向已注册该通知的应用程序发送SERVICE_CONTROL_SHUTDOWN通知。

处理此通知的服务会阻止系统关闭,直到服务停止或指定的关闭前超时间隔SERVICE_PRESHUTDOWN_INFO到期。由于这会影响用户体验,因此服务应仅在绝对有必要避免数据丢失或在下次系统启动时需要大量恢复时间时才使用此功能

由于可能需要,我假设这就是 SQL Server 的工作方式。