0

有没有办法配置 SQL Server 2008 来终止一个事务,如果它既没有被取消也没有提交一段时间?(比如说电源、网络连接或任何在打开计算机时被切断的东西。)

要么是在一些定义的规则集之后自动发生,要么是通过创建和调用命令行应用程序来查询 SQL Server 的活动事务+它们运行的​​时间......然后指示 SQL Server 关闭那些“冻结的” ”。

4

1 回答 1

2

这里引用 Gail Shaw 的话:

SQL Server 不会使查询超时,连接的应用程序(在本例中为查询分析器)会。

无论您使用哪种技术进行连接(ADO 等),都可能具有连接超时和执行超时属性,您可以在调用代码中更改这些属性。默认值通常为 30 秒。

你可能在一个循环中包装这样的东西来杀死每个有问题的 spid:

select datediff(second, last_batch, getdate()) as secs_running, *
from sys.sysprocesses
where hostname != ''
    and open_tran = 1

关于如何最好地找到哪些进程是“安全的”可以杀死的,可能会有很多意见,我当然会有点担心根据任意时间跨度自动做这样的事情。我也不确定在此过程中完成的任何数据更改都可以保证被回滚

于 2012-04-11T14:36:44.197 回答