从SQL Server代理作业运行SSIS包时出现死锁错误

时间:2018-04-10 02:14:01

标签: sql-server ssis

我收到此错误:“在尝试锁定变量”User:vFileExists“以进行读取访问时检测到死锁。在16次尝试后超时无法获取锁定”。 单独运行程序包时不会发生这种情况,但只有在从SQL Server代理程序作业运行时才会发生。我没有任何事件处理程序。

enter image description here

enter image description here

 Public Sub Main()
    '
    ' Add your code here
    '
    If Directory.GetFiles(Dts.Variables("vSourceFilePath").Value.ToString, Dts.Variables("vFileNamePattern").Value.ToString).Length > 0 Then
        Dts.Variables("User::vFileExists").Value = True
        Dts.Variables("User::vFileList").Value = Directory.GetFiles(Dts.Variables("vSourceFilePath").Value.ToString, Dts.Variables("vFileNamePattern").Value.ToString)
    End If

    Dts.TaskResult = ScriptResults.Success
    Dts.Variables.Unlock()

End Sub

enter image description here

2 个答案:

答案 0 :(得分:0)

查看此博客文章:http://www.sqlis.com/sqlis/post/A-deadlock-was-detected-while-trying-to-lock-variables-in-SSIS.aspx

尝试使用变量的范围,以便它们只存在于需要的地方。

答案 1 :(得分:0)

事实证明问题在于权限。从SQL Server代理运行SSIS作业的帐户对ssis包从中提取文件的服务器没有读/写权限。