我收到此错误:“在尝试锁定变量”User:vFileExists“以进行读取访问时检测到死锁。在16次尝试后超时无法获取锁定”。 单独运行程序包时不会发生这种情况,但只有在从SQL Server代理程序作业运行时才会发生。我没有任何事件处理程序。
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
答案 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包从中提取文件的服务器没有读/写权限。