【发布时间】:2016-12-01 19:49:34
【问题描述】:
我有一个 SSIS 包。在其中,有两个 Execute Package Task 元素。这两个包是链接顺序运行的。
套餐一 - 从外部网站 (SalesForce.com) 下载 CSV 文件
E:\SalesForce\MSSQL_Import\PricebookEntry.csv
E:是一个映射的网络驱动器。
包二 - SQL 任务将 CSV 文件的内容批量插入到空表中。
BULK INSERT SalesForce.dbo.PriceBookEntry
FROM 'E:\SalesForce\MSSQL_Import\PricebookEntry.csv'
WITH
(
FIRSTROW = 2,
FIELDTERMINATOR = '\t',
ROWTERMINATOR = '\n',
CODEPAGE = 'ACP',
ERRORFILE = 'E:\SalesForce\Data_Loader\Logs\Error\Bulk_Insert\BI_PriceBookEntry.csv',
TABLOCK
)
触发第二个 SSIS 包时出现以下错误:
[执行 SQL 任务] 错误:执行查询“BULK INSERT SalesForce.dbo.PriceBookEntry FROM ...”失败并出现以下错误:“无法批量加载。文件“E:\SalesForce\MSSQL_Import\PricebookEntry.csv”不存在。”。 可能的失败原因:查询有问题,“ResultSet” 属性设置不正确,参数设置不正确,或 连接未正确建立。
我已经检查了文件的位置。路径和拼写都很好。该文件在脚本运行时存在。
我已尝试将文件保存在 C: 上,只是为了检查。 BULK INSERT 包仍然失败。
我已在管理工作室中将 BULK 查询作为命令运行,它运行良好。
如果我在另一个包中将这些包链接在一起,则 BULK INSERT 会失败。如果我按顺序单独运行 SSIS 包,它们可以正常工作。
我有其他 SSIS 包可以做同样的事情并且工作正常。
我一直在谷歌搜索可能的解决方案,但仍然一无所获。有人对可能是什么问题有任何想法吗?
【问题讨论】:
-
E: is a mapped network drive通常根本原因是执行 SSIS 包的帐户没有与开发它的用户映射相同的驱动器。放在 C 驱动器上时它不起作用的事实让我相信它也可能是权限问题。你已经在其他地方指定了这个工作,所以在第一次剪辑时,我不确定你在哪里出错了
标签: sql-server csv ssis bulkinsert