3

目前,我拥有拥有管理员权限但没有系统管理员权限的 SQL Server 2005 数据库。

有一个特殊的过程阻止我在桌子上做一些事情。

有没有办法杀死用户 SQL 查询,如果它们是通过 Web 客户端运行而没有系统管理员权限。就我而言,django 网站使用 pymssql 运行查询?

4

3 回答 3

1

使用“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 语句。

其他三个可以帮助您的建议:

  1. 努力在针对数据库执行的代码中实现锁定提示的使用。
  2. 如果这是一个持续存在的问题,请让您的 DBA 评估导致阻塞的语句,并征求他们的建议。
  3. 接近你的 DBA永远不会有什么坏处,稍微加油(比萨午餐、下班后的饮料等)一次或两次真的会有所作为。他们可能不会授予您所需的权限提升,但他们可以为您创建一个解决方法,如此处所述,可以在不改变您的角色的情况下解决您的问题。
于 2013-11-12T13:14:36.387 回答
0

使用命令查看连接sp_who然后使用命令KILL <SPID>

于 2013-11-12T08:51:49.583 回答
0

如果您使用的是 ssms,请尝试关闭/保存您 sp 或查询开始运行的编辑器窗口

ssms 会要求您提交交易,只需按确定

就是这样!

于 2020-08-28T00:58:43.970 回答