不能批量加载,因为文件不能被打开。操作系统错误代码3

我试图将一个存储过程设置为SQL Server代理工作,但它给了我以下错误、

不能批量加载,因为文件"P:\file.csv"不能被打开。操作系统错误代码3(未能检索到此错误的文本。 原因:15105)。[SQLSTATE 42000] (错误4861)

有趣的是,当我手动执行这个存储过程时,它工作得很好。

驱动器P:是Windows SQL Server上通过Samba共享的共享驱动器,它是通过执行以下命令设置的、

EXEC xp_cmdshell 'net use P: "\lnxusanfsd01\Data" Password /user:username /Persistent:Yes'

如果有任何帮助,我们将非常感激

我不知道你是否解决了这个问题,但我有同样的问题,如果实例是本地的,你必须检查访问文件的权限,但如果你从你的电脑访问服务器(远程访问),你必须在服务器中指定路径,所以这意味着将文件包括在服务器目录中,这解决了我的问题。

例如:

BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH 
  (
     FIELDTERMINATOR =',',
     ROWTERMINATOR ='\n'
  );
评论(3)

为了简单起见,我只是把导入数据的目录改为服务器上的一个本地文件夹

我的文件位于一个共享文件夹中,我只是把我的文件复制到服务器上的"c:\TEMP\Reports"(将查询更新为从新文件夹中的BULK INSERT)。代理任务成功完成 :)

经过长时间的努力,我终于能够通过代理任务自动进行BULK插入。

最好的问候。

评论(0)

这可能是一个权限问题,但你需要确保尝试这些步骤来排除故障:

  • 将文件放在本地驱动器上,看看工作是否正常(如果你能将本地工作站上的一个盘符映射到数据库服务器上的一个目录,就不一定需要RDP访问)。
  • 把文件放在一个不需要用户名和密码的远程目录下(允许每个人阅读),并使用UNC路径(\server\directory\file.csv)。
  • 配置SQL作业,使其以你自己的用户名运行。
  • 配置SQL工作以sa身份运行,并在前后添加net usenet use /delete命令

记住撤销任何改变(特别是以sa身份运行)。如果其他方法都不奏效,你可以尝试将批量加载改为计划任务,在数据库服务器或其他安装了bcp的服务器上运行。

评论(4)