sql - 批量插入 - 访问被拒绝
问题描述
我在这个错误上苦苦挣扎了一段时间。我有以下命令:
-- 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 服务器运行命令,为什么还要委派?
任何建议表示赞赏!
谢谢
费利佩·卡莱索
解决方案
推荐阅读
- angular - Angular - Textarea 自动高度不会在文本删除时自动调整大小
- r - 咕噜声中的点积
- swift - PdfKit 注释突出显示并保存 IOS 11
- python-3.x - 合并csv文件python中的行
- java - 在 Websphere 中部署 WAR,忽略所有 JEE 库
- node.js - 如何在没有中间件的情况下使用 multer 上传文件
- phantomjs - 当有 flexbox 时,使用 phantomjs 生成 pdf 的问题
- c++ - 在 C++ 中使用指针进行字符串处理
- python - Django Rest Framework - 通过函数传递模型数据,然后在同一模型的单独字段中发布输出
- xamarin - Xamarin Forms 会随机拒绝构建抛出各种引用错误,重启后就可以正常工作了