A_V Asked: 2016-05-10 09:37:04 +0800 CST2016-05-10 09:37:04 +0800 CST 2016-05-10 09:37:04 +0800 CST 卡在管理工作室的任务,你如何处理它们? 772 在管理工作室中单击“使数据库脱机”后,如果单击关闭,此消息将保持挂起并且不会关闭。 在管理工作室中处理此类卡住工作的好方法是什么?你能通过活动监视器杀死他们吗?我应该寻找什么过程阻止这项工作通过并终止它? sql-server ssms 3 个回答 Voted Best Answer Aaron Bertrand 2016-05-10T09:59:46+08:002016-05-10T09:59:46+08:00 我想说永远不要在 GUI 中使用“脱机”功能,除非您知道数据库未在使用中。随随便便。如果不做一些跑腿工作就很难知道这一点,那么为什么不将此脚本保存在某个地方并始终使用它呢? USE [master]; GO ALTER DATABASE $dbname$ SET SINGLE_USER WITH ROLLBACK IMMEDIATE; GO ALTER DATABASE $dbname$ SET OFFLINE; 然后当然是倒数: ALTER DATABASE $dbname$ SET ONLINE; GO ALTER DATABASE $dbname$ SET MULTI_USER; 您需要将其设置为SINGLE_USER首先的原因是踢出任何现有用户(在分离对话框中有一个选项可以这样做,但不是脱机对话框),因为 SQL Server 需要对数据库的独占访问权才能采取它离线。现在,您可能需要做一些额外的工作以查看当前谁在使用数据库,就像您在大型备份操作或 ETL 作业或您有什么工作的中间执行此操作一样,这可能会出现问题。 编辑:我已经在 Connect 上提交了一个关于此的建议(请参阅Connect #2687832),并将其发布到Trello(归档在“对象资源管理器”下)。 这已在 SSMS 16.3 中修复;现在有一个复选框,询问您是否要强制终止任何活动连接。 Mike M 2018-03-28T20:34:21+08:002018-03-28T20:34:21+08:00 当您已经处于挂起状态时,不要忘记您可以使用以下命令搜索服务器上的打开连接 sp_who2 在另一个数据库中,例如 master。 扫描任何数据库是您尝试脱机的结果的结果。 请注意这些行的 spid(进程 ID)列值。 一次一个,跑 kill ## 其中“##”是 spid。 当然要注意确保这些进程对于继续运行并不重要......它们甚至会在没有完成最新命令且没有警告的情况下终止。 Kirill 2020-06-26T16:49:52+08:002020-06-26T16:49:52+08:00 如果其他答案无助于尝试从任务管理器中终止管理工作室进程。为我做了一次伎俩。我想它通过放弃开放会话有所帮助。另一个好消息是,在重新启动管理工作室后,它恢复了所有打开的文件。当然,这是最后的手段。
我想说永远不要在 GUI 中使用“脱机”功能,除非您知道数据库未在使用中。随随便便。如果不做一些跑腿工作就很难知道这一点,那么为什么不将此脚本保存在某个地方并始终使用它呢?
然后当然是倒数:
您需要将其设置为
SINGLE_USER
首先的原因是踢出任何现有用户(在分离对话框中有一个选项可以这样做,但不是脱机对话框),因为 SQL Server 需要对数据库的独占访问权才能采取它离线。现在,您可能需要做一些额外的工作以查看当前谁在使用数据库,就像您在大型备份操作或 ETL 作业或您有什么工作的中间执行此操作一样,这可能会出现问题。编辑:我已经在 Connect 上提交了一个关于此的建议(请参阅Connect #2687832),并将其发布到Trello(归档在“对象资源管理器”下)。这已在 SSMS 16.3 中修复;现在有一个复选框,询问您是否要强制终止任何活动连接。
当您已经处于挂起状态时,不要忘记您可以使用以下命令搜索服务器上的打开连接
在另一个数据库中,例如 master。
扫描任何数据库是您尝试脱机的结果的结果。
请注意这些行的 spid(进程 ID)列值。
一次一个,跑
其中“##”是 spid。
当然要注意确保这些进程对于继续运行并不重要......它们甚至会在没有完成最新命令且没有警告的情况下终止。
如果其他答案无助于尝试从任务管理器中终止管理工作室进程。为我做了一次伎俩。我想它通过放弃开放会话有所帮助。另一个好消息是,在重新启动管理工作室后,它恢复了所有打开的文件。当然,这是最后的手段。