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

前端之家收集整理的这篇文章主要介绍了sql-server – 停止Microsoft SQL Server实例时运行查询会发生什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
考虑到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是可选的).

猜你在找的MsSQL相关文章