2016-12-01 86 views
1

我有一个SSIS包。里面有两个执行包任务元素。这两个软件包链接在一起运行。SSIS包错误 - BULK INSERT“文件不存在”

第一包 - 从外部站点下载CSV文件(SalesForce.com)

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包被触发时:

[Execute SQL Task] Error: Executing the query "BULK INSERT SalesForce.dbo.PriceBookEntry FROM..." failed with the following error: "Cannot bulk load. The file "E:\SalesForce\MSSQL_Import\PricebookEntry.csv" does not exist.". Possible failure reasons: Problems with the query, "ResultSet" property not set correctly, parameters not set correctly, or connection not established correctly.

我检查了文件的位置。路径和拼写都很好。该文件在脚本运行时存在。

我已经尝试将文件保存在C:只是为了检查。 BULK INSERT软件包仍然失败。

我已经在管理工作室中运行BULK查询作为命令,它工作正常。

如果我将这些软件包链接到另一个软件包中,则BULK INSERT失败。如果我按顺序分别运行SSIS包,它们工作正常。

我有其他SSIS包做同样的事情,工作正常。

我一直在谷歌高和低的可能的解决方案,仍然没有。任何人有什么想法可能是什么问题?

+1

'E:映射网络驱动器'通常根本原因是执行SSIS包的帐户没有与开发它的用户映射相同的驱动器。放在C驱动器上不起作用的事实使我相信它也可能是一个许可问题。尽管如此,您已经在其他地方指定了此项功能,但我不确定您在哪里出错 – billinkc

回答

0

我发现了这个问题。

快速回答是在SSIS中激活BULK INSERT命令之前,下载的CSV文件未完成。因此SQL Server无法访问该文件。

以前的工作只适用于非常小的文件(2000左右的行)。这项工作正在进行更多(约1百万行)。

该解决方案将涉及阻止BULK INSERT,直到文件完成下载。