应用程序使用KILL命令终止数据库连接

时间:2011-08-10 18:16:08

标签: sql-server-2008

所有

我已经下定决心,这不会发生,但在我的商店里,我常常只是几个DBA之一,我喜欢听别人的经历。

我们有供应商声明他们需要processadmin角色成员身份,因此他们的应用可以针对其数据库执行长时间运行或用户取消的查询。在10多年的时间里,我从未遇到过这个问题。我们目前拥有400多个数据库,并且没有一个用户处于processadmin角色。在我看来,即使用户取消了应用程序中的给定进程,应用程序代码也可以根据需要正常打开和关闭连接。如果查询“太长”,则需要进行调整。

根据正在被杀的内容,回滚可能非常麻烦并导致阻塞。我还担心他们可以轻易地在共享环境中杀死错误的连接 还有其他人遇到过这种情况吗?我遗失了哪些明显的东西?

3 个答案:

答案 0 :(得分:3)

如果您依靠KILL来处理长时间运行的查询(不应该长时间运行),那么T-SQL代码肯定需要调优。如果这些是基于用户从应用程序/网页中选择的首选项从动态查询设计器发送到引擎的临时SQL,则需要查看提供给用户的选项。除非并且除非没有其他选择,否则我从未成为查杀查询的倡导者。要解决与生产相关的中断(作为变通方法或即时解决方案),有时可能会接受,但不能作为实践。

答案 1 :(得分:2)

我不会从这样的供应商处购买应用程序,它必然会表现糟糕,设计糟糕且有错误。任何不称职的人都不知道应用程序不应该拥有管理员权限的人不是我会从中购买产品的人。

答案 2 :(得分:0)

虽然processadmin将获得他们所需要的东西,但您可以让他们创建(或代表他们创建一个)签名模块,该模块只能杀死某些进程(即来自其应用程序的进程)。但即便如此,我也会引起别人的共鸣;这不是一个好的通用做法。