授予所有人对文件的读取权限,但 SQL 服务器无法批量插入

granted read access to file to everyone, yet SQL Server cannot bulk insert

使用 Windows 10,SQL 服务器 2016。 我的机器名称是 FR-PC4335。 已授予对文件

的访问权限

\\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv

到"everyone"。 使用远程桌面登录到服务器并能够使用文件资源管理器访问该 UNC 路径。 然而,在 BULK INSERT 尝试中,SQL 服务器 returns

消息 4861 级别 16: 访问被拒绝。

我是否需要在所有人之上授予对 SQL 服务器的特定访问权限?

对 SQL 服务器连接使用 Windows 身份验证。

BULK INSERT #temptable
FROM '\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv'
WITH
(firstrow=2,fieldterminator=',',rowterminator='\n');

消息 4861,级别 16,状态 1,第 22 行 批量加载 impossible 因为无法打开文件“\\FR-PC4335\Users\aubertl\Documents\csv\Exemple fichier cout de production.csv”。 os 错误代码 5(访问被拒绝。)。

看起来我有 bulkadmin 权限:

SELECT IS_SRVROLEMEMBER('bulkadmin') AS bulkadmin;

如果直接在服务器上启动,BULK INSERT 查询 运行 成功,但如果 运行 来自客户端 SSMS,则失败。我想知道为什么。

您提供了一个相对于您的 PC 和特定用户的路径,但尽管您提供了文件权限,但出于隐私原因不适合服务器。您不仅需要一个共享文件夹,还需要一个不在用户文件夹中的静态路径。 ....

尝试把你的文件放到真实磁盘(比如C盘)的直接文件夹中。

如果您是法国人,您也可以在 developpez.com 法语论坛中用法语提问....

已将文件上传到服务器。 运行:

BULK INSERT #temptable
--FROM '\FR-COUVSQL200\csv\Exemple_fichier_cout_de_production.csv'
FROM 'C:\csv\Exemple_fichier_cout_de_production.csv'    
WITH
(firstrow=2,fieldterminator=';',rowterminator='\n')
;

来自客户端的 SSMS。它奏效了。该文件之前已上传到服务器上的 C:\csv。奇怪的是,对同一路径使用 UNC 失败。