首页 > 解决方案 > 批量插入 - 访问被拒绝

问题描述

我在这个错误上苦苦挣扎了一段时间。我有以下命令:

-- 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 实例,具有相同的用户、相同的数据库和所有内容。我收到以下错误:

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

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

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

任何建议表示赞赏!

谢谢

费利佩·卡莱索

标签: sqlsql-serverbulkinsert

解决方案


推荐阅读