在存储过程中批量插入命令失败

问题描述 投票:0回答:1

系统错误:由于无法打开文件“ XYZ.txt”,因此无法批量加载。操作系统错误代码1311(当前没有可用于登录请求的登录服务器。)

我在SQL Server 2008 R2中有一个存储过程,该存储过程正在使用Bulk Insert命令将txt文件中的数据加载到SQL Server表中。这些文件位于不同域的驱动器上的共享文件夹中。我可以完全访问该驱动器。我尝试将文件复制到该驱动器上的其他目录,移动文件,删除文件,然后一切正常。

当我从本地计算机的sms会话执行存储过程时,它的工作原理就像冠军。它能够打开共享驱动器上的文件,读取文件并将数据加载到SQL Server表中,而不会出现任何问题。当我从SQL Server代理作业中调用存储过程时,它将引发此错误。

SQL Server代理正在使用该帐户,该帐户非常强大,具有比我的帐户更多的权限。但是工作失败。

为了找到解决方法,我创建了一个SSIS包,该包从“执行SQL任务”中调用存储过程。它使用Windows身份验证连接到数据库。我尝试执行该程序包,并成功运行。它能够将数据从txt上传到表格。

因此,我使用帐户详细信息创建了一个SQL Server用户,然后使用该凭据创建了具有ssis子系统的代理。然后,我将作业安排为使用新创建的代理执行该步骤,以查看其是否可以上传数据。但是它失败,并出现相同的错误。

我很困惑我在做什么错..?我什至将自己加入了bullkmin的角色,并再次成功完成了工作。

如果有人可以提供帮助,我将不胜感激。

谢谢。

sql-server bulkinsert sql-server-agent
1个回答
0
投票

出于好奇,我尝试用BCP替换批量插入命令。出于某些原因,BCP起作用了。它能够打开网络驱动器上的文件,并进行读取以将数据插入sql服务器表中。我什至可以从sql agent作业中调用相同的存储proc,它工作得很好。我不需要使用SSIS包来解决此问题。

© www.soinside.com 2019 - 2024. All rights reserved.