有些用户忘记关闭使用我们的 SQL 2014 数据库的访问查询。当发生这种情况时,它会阻止他们正在访问的表在夜间重建。有什么方法可以杀死这些用户而不杀死系统进程。据我所知,系统进程不仅限于 SPID >50。
根据杀死用户进程spid>=50
好像不太靠谱。
来自亚当·马卡尼奇:打破 DMV 神话:session_id > 50 == 用户进程 http://dataeducation.com/smashing-a-dmv-myth-session_id-50-user-process/
最近 MVP 邮件列表上的一次对话表明,这个神奇的数字虽然可能曾经是一个合法的过滤器,但在 SQL Server 2005 或 SQL Server 2008 中使用肯定不安全。一些系统功能可以并且将会使用更大的会话 ID。超过 50,因为否则根本没有足够的空间。
示例包括:
- 使用软 NUMA 的大型服务器,因为每个 NUMA 节点有一个检查点和惰性写入线程
- 异步统计更新,再次(尤其是)在大型服务器上
数据库镜像,特别是涉及大量数据库时
- Service Broker 激活,当使用大量激活任务时
可能还有其他情况。关键是,数字 50 不再是过滤系统会话 ID 的有效方法。
所以你的选择是
SELECT *
FROM sys.dm_exec_sessions
WHERE
is_user_process = 1
SELECT *
FROM sys.sysprocesses
WHERE
hostprocess > ''
您可以使用上面的查询来获取除系统之外的 spid/session 并使用kill命令来杀死它们
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)