我有一个SSIS包(使用Visual Studio 2012构建),其中包含各种执行SQL任务。它在SQL Server 2012上作为一个作业运行。在包属性中,我将TransactionOption设置为Required;所有任务的TransactionOption设置均为Supported。 IsolationLevel在所有内容上都设置为Serializable。昨天突然间,其中一项任务开始挂起。如果我单独运行此任务,它运行正常。如果我禁用它并运行其余的包,那就没问题了。但是,如果启用此任务并尝试运行该程序包,则会挂起此任务,并阻止其后面的所有会话。我可以让整个程序包正常运行的唯一方法是将程序包的TransactionOption设置更改为Supported(即关闭事务)。以下是违规任务的作用:
update timekeep
set tkemail = u.EMail,
tkmoddate = getdate(),
tkmoduser = 'appmgr'
from ALLUSERDATA.AllUserData.dbo.[User] u
where u.Login COLLATE SQL_Latin1_General_CP1_CI_AI = tkinit
and tkemail <> u.EMail COLLATE SQL_Latin1_General_CP1_CI_AI
我已尝试在UPDATE语句之后添加WITH(ROWLOCK),但这没有帮助。整个公司的整个公司都使用了时间表,但是SSIS包计划在凌晨3:45运行,而且它仍然悬挂着。再次,这只是昨天早上开始的。 DBA说服务器上的任何内容都没有改变。关于可能导致这种情况的任何想法?