运行批量插入时
BULK INSERT MyDatabase.dbo.MyTable
FROM '\\Mylaptop\UniversalShare\SQLRuleOutput.csv'
WITH (FIRSTROW = 2, FIELDTERMINATOR = ',', ROWTERMINATOR = '\n')
在远程SQL Server上我收到此错误:
“无法批量加载,因为该文件 无法打开“\ MyLaptop \ UniversalShare \ SQLRuleOutput.csv”。 操作系统错误代码5(访问被拒绝。)。“
Invoke-SQLCMD
脚本,它连接到同一个共享,因此服务器可以看到该共享。Bulk Insert
(这是我的预期方法),此Invoke-SQLCMD
语句都会失败并出现相同的错误。此问题类似,Cannot bulk load. Operating system error code 5 (Access is denied.),但在我的情况下,共享对所有人开放,因此权限不应该成为问题,并且共享肯定在不同的地方(我的笔记本电脑用于POC开发)比SQL Server。
有谁知道为什么会发生这种错误,或者如何绕过它?
谢谢,
康拉德
答案 0 :(得分:3)
运行MSSQL服务的Windows帐户必须可以访问该共享;通常是本地系统或网络服务(但可以是任何东西)。您不太可能已经明确地授予对本地文件共享的MYSERVER \ LOCAL SERVICE访问权限。
运行Powershell Invoke-SQLCMD并未证明MSSQL服务拥有驱动器的权限 - 它取决于您运行power shell的帐户。