BULK INSERT返回错误“访问被拒绝”

时间:2018-03-12 22:33:10

标签: sql-server bulkinsert

运行批量插入时

BULK INSERT MyDatabase.dbo.MyTable 
FROM '\\Mylaptop\UniversalShare\SQLRuleOutput.csv' 
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')

在远程SQL Server上我收到此错误:

  

“无法批量加载,因为该文件   无法打开“\ MyLaptop \ UniversalShare \ SQLRuleOutput.csv”。   操作系统错误代码5(访问被拒绝。)。“

  • 分享对所有人开放。
  • 我在该SQL Server上运行了PowerShell Invoke-SQLCMD脚本,它连接到同一个共享,因此服务器可以看到该共享。
  • 无论我是在SQL Server上直接将其作为T-SQL运行,还是通过PowerShell Bulk Insert(这是我的预期方法),此Invoke-SQLCMD语句都会失败并出现相同的错误。

此问题类似,Cannot bulk load. Operating system error code 5 (Access is denied.),但在我的情况下,共享对所有人开放,因此权限不应该成为问题,并且共享肯定在不同的地方(我的笔记本电脑用于POC开发)比SQL Server。

有谁知道为什么会发生这种错误,或者如何绕过它?

谢谢,

康拉德

1 个答案:

答案 0 :(得分:3)

运行MSSQL服务的Windows帐户必须可以访问该共享;通常是本地系统或网络服务(但可以是任何东西)。您不太可能已经明确地授予对本地文件共享的MYSERVER \ LOCAL SERVICE访问权限。

运行Powershell Invoke-SQLCMD并未证明MSSQL服务拥有驱动器的权限 - 它取决于您运行power shell的帐户。