SSIS包错误 - BULK INSERT“文件不存在”

时间:2016-12-01 19:49:35

标签: sql-server csv ssis bulkinsert

我有一个SSIS包。在其中,是两个执行包任务元素。这两个包链接到按顺序运行。

Package One - 从外部网站(SalesForce.com)下载CSV文件

E:\ SalesForce公司\ MSSQL_Import \ PricebookEntry.csv

E:是映射的网络驱动器。

Package Two - SQL任务到BULK INSERT将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包可以做同样的事情并且工作正常。

我一直在谷歌上搜索可能的解决方案,但仍然没有。任何人对可能出现的问题都有任何想法吗?

1 个答案:

答案 0 :(得分:0)

我发现了问题。

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

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

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