批量插入-访问被拒绝

时间:2020-05-07 16:40:47

标签: sql sql-server bulkinsert

一段时间以来,我一直在努力解决此错误。我有以下命令:

-- Declare main variables
DECLARE @command VARCHAR(500);
DECLARE @currentPath VARCHAR(100);
SELECT  @currentPath = '\\SERVERNAME.Domain\Temp\';
DECLARE @currentFile VARCHAR(100);
DECLARE @currentDate VARCHAR(100) = REPLACE(REPLACE(REPLACE(CONVERT(VARCHAR, GETDATE(), 126),'-',''),'T','T'),':','');

-- BILL OF MATERIALS
SET @currentFile = 'File'
TRUNCATE TABLE SampleData.iTable;
SET DATEFORMAT dmy;
SET @command =    ' BULK INSERT SampleData.iTable'
SET @command = @command + ' FROM ''' + @currentPath + @currentFile + '.csv'''
SET @command = @command + ' WITH '
SET @command = @command + ' (FIRSTROW = 2, '
SET @command = @command + '  FIELDTERMINATOR = '';'', '
SET @command = @command + '  ROWTERMINATOR = ''\n'', '
SET @command = @command + '  MAXERRORS = 99999, '
SET @command = @command + '  ERRORFILE = ''' + @currentPath + @currentFile + '_ERROR_' + @currentDate + '.csv'',' 
SET @command = @command + '  TABLOCK '
SET @command = @command + ' ) '
EXECUTE (@command)

如果我从SQL Server VM内的Management Studio运行它,它将很好地工作。如果我从我的计算机或任何其他连接到相同SQL Server实例,具有相同用户,相同数据库和所有内容的计算机上,从Management Studio运行此批量插入,则会收到以下错误:

由于无法打开文件“ \ SERVERNAME.Domain \ Temp \ File.csv”,因此无法批量加载。操作系统错误代码5(访问被拒绝。)。

可能的原因是用户所在的域与SQL Server和共享路径不在同一域。.但也不确定这是问题所在,因为我可以从SQL Server VM成功运行BULK INSERT

另一个可能的原因是活动目录委派,但是我没有权限进行检查,如果我可以从SQL VM服务器运行命令,为什么还要委派呢?

任何建议都值得赞赏!

谢谢

Felipe Carlesso

0 个答案:

没有答案