一段时间以来,我一直在努力解决此错误。我有以下命令:
-- 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