系统错误:无法大容量加载,因为无法打开文件"XYZ.txt"。操作系统错误代码1311(当前没有可用于服务登录请求的登录服务器。(
我在SQL Server 2008 R2中有一个存储过程,它使用Bulk Insert
命令将数据从txt文件加载到SQL Server表中。这些文件位于不同域的驱动器上的共享文件夹中。我可以完全访问驱动器。我试着将文件复制到驱动器上的不同目录,移动文件,删除文件,一切都正常。
当我从本地计算机的ssms会话中执行存储过程时,它就像冠军一样工作。它能够打开共享驱动器上的文件,读取文件并将数据加载到SQL Server表中,而不会出现任何问题。当我从SQL Server代理作业调用存储过程时,它会抛出此错误。
SQL Server代理使用的帐户非常强大,权限比我的多得多。但这项工作失败了。
为了找到解决方法,我创建了一个SSIS包,该包从"执行SQL任务"调用存储过程。它使用Windows身份验证来连接到数据库。我尝试执行程序包,它成功运行。它可以将数据从txt上传到表中。
因此,然后我用我的帐户详细信息创建了一个SQL Server用户,然后使用该凭据创建了一个子系统ssis的代理。然后,我安排作业使用新创建的代理执行步骤,看看它是否可以上传数据。但它以同样的错误失败了。
我很困惑我做错了什么。。?我甚至加入了bulkdmin的角色,并再次担任该职位,但没有成功。
如果有人能帮忙,我将不胜感激。
谢谢。
出于好奇,我尝试用BCP替换Bulk Insert命令。出于某种原因,BCP起了作用。它可以打开网络驱动器上的文件,并通过读取将数据插入sql server表中。我甚至可以从sql代理作业调用相同的存储过程,它运行得非常好。我不需要使用SSIS包来解决此问题。