我有一个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包可以做同样的事情并且工作正常。
我一直在谷歌上搜索可能的解决方案,但仍然没有。任何人对可能出现的问题都有任何想法吗?
答案 0 :(得分:0)
我发现了问题。
快速回答是,在SSIS中触发BULK INSERT命令之前,未完成正在下载的CSV文件。因此,SQL Server无法访问该文件。
之前的工作只适用于非常小的文件(2000行左右)。这项工作正在进行更多工作(约1密尔行)。
解决方案将涉及阻止BULK INSERT,直到文件完成下载。