sql-server - 关闭/终止交易

标签 sql-server sql-server-2005

根据DBCC OPENTRAN,我有这个未完成的事务:

Oldest active transaction:
SPID (server process ID) : 54
UID (user ID)            : -1
Name                     : UPDATE
LSN                      : (4196:12146:1)
Start time               : Jul 20 2011 12:44:23:590PM
SID                      : 0x01

有办法杀死它/回滚它吗?

最佳答案

您应该首先弄清楚它在做什么,它来自哪里,以及如果适用,它预计运行多长时间:

SELECT 
   r.[session_id],
   c.[client_net_address],
   s.[host_name],
   c.[connect_time],
   [request_start_time] = s.[last_request_start_time],
   [current_time] = CURRENT_TIMESTAMP,
   r.[percent_complete],
   [estimated_finish_time] = DATEADD
       (
           MILLISECOND,
           r.[estimated_completion_time], 
           CURRENT_TIMESTAMP
       ),
   current_command = SUBSTRING
       (
           t.[text],
           r.[statement_start_offset]/2,
           COALESCE(NULLIF(r.[statement_end_offset], -1)/2, 2147483647)
       ),
   module = COALESCE(QUOTENAME(OBJECT_SCHEMA_NAME(t.[objectid], t.[dbid])) 
       + '.' + QUOTENAME(OBJECT_NAME(t.[objectid], t.[dbid])), '<ad hoc>'),
   [status] = UPPER(s.[status])
 FROM
     sys.dm_exec_connections AS c
 INNER JOIN
     sys.dm_exec_sessions AS s
     ON c.session_id = s.session_id
 LEFT OUTER JOIN
     sys.dm_exec_requests AS r
     ON r.[session_id] = s.[session_id]
 OUTER APPLY
     sys.dm_exec_sql_text(r.[sql_handle]) AS t
 WHERE
     c.session_id = 54;

如果您有信心可以断开此连接,您可以使用:

KILL 54;

请注意,根据 session 正在执行的操作,它可能会使数据和/或调用它的应用程序处于奇怪的状态。

关于sql-server - 关闭/终止交易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833867/

相关文章:

使用值列表中随机但唯一的值更新字段的 SQL 命令

sql-server - 将 BINARY 值连接到 NVARCHAR 字符串

python - 使用 adodbapi 连接到 SQLServer 2005

sql-server-2005 - NHIbernate SysCache2 和 SQLDependency 问题

sql-server-2005 - SQL Server 2005、缓存和所有爵士乐

sql-server-2005 - 无法正确地使用带有XML路径的order by子句(SQL Server)

php - Microsoft Drivers 2.0 for PHP for SQL Server 是否还在某个地方?

sql - 列出员工、部门的详细信息,并带有引用栏

sql-server - 将 VARCHAR 转换或转换为 INT;更新专栏

sql - 在 sql server 2005 中选择