【发布时间】:2021-01-19 15:48:08
【问题描述】:
我正在针对驻留在 Linux / RHEL VM 中的 SQL Server 2019 进行批量插入查询(通过存储过程)。执行后,我收到此错误:
消息 4860,级别 16,状态 1,过程 dbo.Import_Store,第 25 行 [批量开始第 14 行]
无法批量加载。文件“/home/user1/FileStorage/Store1.csv”确实 不存在或您没有文件访问权限。
此错误消息不正确 - 即文件物理上存在于 VM 上的指定路径并具有正确的权限(每个人都获得了完全权限!)。
高度赞赏任何见解。谢谢。
BULK INSERT dbo.Store
FROM '/home/user1/FileStorage/Store1.csv'
WITH
(
FORMAT = 'CSV', FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n'
);
仅供参考 - 我尝试了许多选项,例如使用 C:\ 或 C:/ 而不是 /home,但到目前为止没有任何效果。
【问题讨论】:
-
你的
sql server运行的账号,这也有完全权限吗? -
是的,它是 sa(管理员)帐户。
-
我非常怀疑
mssql用户/组可以访问user1的主目录(更重要的是它不应该)。将文件放在其他位置,mssql组有权读取(和写入)。 -
@Larnu 应该不需要写吧?
-
我不记得 SQL Server 是否尝试在 Linux 上锁定文件,@Charlieface。我建议它可能会,因此文件在加载时不能被更改,这需要写访问权限。
标签: sql-server linux bulkinsert