我的Server版本是2019 (RTM),我遇到了一个新的锁定问题。
一个SSIS包正在运行。过了一会儿,它被ID为(-2)的会话挂起。我知道这种类型的会话属于孤立事务,但我不知道如何解决它。包是事务性的,事务是DTC。
首先,我在活动监视器中检查了会话的细节,它是:
sys.sp_describe_first_result_set对我来说毫无意义。为什么是系统程序?
然后,我尝试使用以下方法杀死孤儿会话:
Select req_transactionUOW
from master..syslockinfo
where req_spid = -2
KILL '93ED58CC-5D18-4A08-82FC-1AE9A40E4E3C'哪个'93ED58CC-5D18-4A08-82FC-1AE9A40E4E3C'是SELECT查询的输出。
但是它杀死了包会话和孤立事务。
发布于 2022-06-25 10:03:43
通过执行此脚本,您可以找到任何打开的事务。
USE TestDB
Go
DBCC OPENTRAN 执行之后,您可以像这样查看孤立的事务:
Transaction information for database 'TestDB'.
Replicated Transaction Information:
Oldest distributed LSN : (0:0:0)
Oldest non-distributed LSN : (5523658:5048:2)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.如您所见,我们在数据库中有一个开放的孤立事务,它与CDC对象和清理作业相关。我们可以禁用CDD并再次启用它。
USE TestDB
go
exec sys.sp_cdc_disable_db因为我们对对象进行了手动清理,所以我们应该禁用并启用SQL Server来完成CDC对象和设置的完整清理。一旦完成,您可以再次检查任何打开的事务。
如果这会导致事务日志大小出现问题,此技巧可能会帮助您手动清理CDC。在再次工作之后,您可能希望将日志文件缩小到适当的大小,以获得一些磁盘空间。
https://dba.stackexchange.com/questions/310778
复制相似问题