无法批量加载,因为无法打开文件.操作系统错误代码3

use*_*260 35 sql-server samba sql-server-agent stored-procedures bulk-load

我正在尝试将存储过程设置为SQL Server代理作业,并且它给出了以下错误,

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

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

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

EXEC xp_cmdshell'净使用P:"\ lnxusanfsd01\Data"密码/用户:用户名/持久性:是'

任何有关这方面的帮助将受到高度赞赏

DuS*_*ant 48

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

例:

BULK INSERT Table
FROM 'C:\bulk\usuarios_prueba.csv' -- This is server path not local
WITH 
  (
     FIELDTERMINATOR =',',
     ROWTERMINATOR ='\n'
  );
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,你准确地指出了我的问题并解决了我 15 分钟的'文件在那里,你为什么不能阅读它?'。 (2认同)

小智 6

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

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

终于,经过很长一段时间,我能够通过座席工作自动批量插入。

最好的祝福。


ana*_*ule 5

我已经解决了这个问题,

登录到安装了 SQL Server 的服务器计算机,在服务器计算机上获取 csv 文件并执行查询,它将插入记录。

如果您将提供数据类型兼容性问题,请更改该列的数据类型


acf*_*cis 1

这可能是权限问题,但您需要确保尝试以下步骤进行故障排除:

  • 将文件放在本地驱动器上,然后查看作业是否有效(如果您可以将本地工作站上的驱动器号映射到数据库服务器上的目录,则不一定需要 RDP 访问权限)
  • 将文件放在不需要用户名和密码的远程目录(允许每个人读取)并使用 UNC 路径 (\server\directory\file.csv)
  • 配置 SQL 作业以您自己的用户名运行
  • 配置 SQL 作业运行方式并在前后sa添加net use和命令net use /delete

请记住撤消任何更改(尤其是作为 运行sa)。如果其他方法都不起作用,您可以尝试将批量加载更改为计划任务,在数据库服务器或其他安装了 bcp 的服务器上运行。