加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql-server – 停止Microsoft SQL Server实例时运行查询会发生什

发布时间:2020-12-12 06:14:39 所属栏目:MsSql教程 来源:网络整理
导读:考虑到MS SQL Server实例正在执行长时间运行的查询,该服务通过services.msc停止,或者 – 实际发生 – 由UPS触发系统关闭,因为服务器位于发展中国家,经历了滚动停电. 发生这种情况时,服务将保持“停止”状态一段时间,并且CPU和磁盘I / O在此过程中保持高电平.
考虑到MS SQL Server实例正在执行长时间运行的查询,该服务通过services.msc停止,或者 – 实际发生 – 由UPS触发系统关闭,因为服务器位于发展中国家,经历了滚动停电.

发生这种情况时,服务将保持“停止”状态一段时间,并且CPU和磁盘I / O在此过程中保持高电平.

正在运行的查询会发生什么?是否允许他们在服务进入“已停止”状态之前完成,还是取消并回滚?

理想情况下,我正在寻找一个权威来源(Microsoft文档)作为答案,因为我怀疑不同的行为取决于我不知道的因素.即有时我们会看到查询回滚,有时我们会看到它们完整.也许该服务会调用它在事务的范围内以及是否更快地回滚或完成.

如果它有所作为,那就是SQL 2012.

提前致谢!

解决方法

这取决于您是否使用NOWAIT关闭服务器.

从MSDN开始:

Unless the WITH NOWAIT option is used,SHUTDOWN shuts down SQL Server
by:

  • Disabling logins (except for members of the sysadmin and serveradmin fixed server roles).
  • Waiting for currently running Transact-SQL statements or stored procedures to finish. To display a list of all active processes and
    locks,run sp_who and sp_lock,respectively.
  • Inserting a checkpoint in every database.

Using the SHUTDOWN statement minimizes the amount of automatic
recovery work needed when members of the sysadmin fixed server role
restart SQL Server.

至于关闭与NOWAIT:

Optional. Shuts down SQL Server without performing checkpoints in every database. SQL Server exits after attempting to terminate all
user processes. When the server restarts,a rollback operation occurs
for uncompleted transactions.

默认是等待当前正在运行的事务完成(NOWAIT是可选的).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读