目前,我拥有拥有管理员权限但没有系统管理员权限的 SQL Server 2005 数据库。
有一个特殊的过程阻止我在桌子上做一些事情。
有没有办法杀死用户 SQL 查询,如果它们是通过 Web 客户端运行而没有系统管理员权限。就我而言,django 网站使用 pymssql 运行查询?
目前,我拥有拥有管理员权限但没有系统管理员权限的 SQL Server 2005 数据库。
有一个特殊的过程阻止我在桌子上做一些事情。
有没有办法杀死用户 SQL 查询,如果它们是通过 Web 客户端运行而没有系统管理员权限。就我而言,django 网站使用 pymssql 运行查询?
使用“KILL”是受角色限制的,这是有充分理由的,只有在您了解阻塞进程在做什么时才应该使用它。如果对执行长时间运行事务的 SPID 使用 KILL 语句,则 KILL 将在表上启动 ROLLBACK(在大表上可能需要相当长的时间)以保持 DB 一致性。该声明:
SELECT open_tran FROM master.sys.sysprocesses WHERE SPID=<blocking SPID number>
会给你一些关于这个过程和它在做什么的细节。或者,您可以尝试:
DBCC INPUTBUFFER(<spid>)
找到由 SPID 提交的最后一条语句(尽管我认为您的权限可能不够)。如果确定 SPID 在块上处于休眠状态,您仍需要被提升为 processadmin 的最低角色才能执行 KILL 语句。
其他三个可以帮助您的建议:
使用命令查看连接sp_who
然后使用命令KILL <SPID>
如果您使用的是 ssms,请尝试关闭/保存您 sp 或查询开始运行的编辑器窗口
ssms 会要求您提交交易,只需按确定
就是这样!