0

任务:循环遍历这些 excel 文件并将数据插入 SQL 表,但在此过程中我得到一个错误,我不知道它出错了。

我的理解是 SSIS 不会以随机顺序遍历文件,但我收到一个关于 CANNOT ACQUIRE CONNECTION FROM CONNECTIONMANAGER 的错误。Excel Source 验证失败并返回错误代码。我确实将 64bitruntime 设置为 False。这发生在 Windows 7 操作系统上的 VS 2008/SQL Server 2008 R2 上。最初,我能够在 Windows XP-VS2008 /SQL Server 2008 R2 上成功运行整个过程。

问题:如果我在一个文件夹中有 70 个奇怪的文件,我如何知道接下来要迭代哪个文件系统。我得到一个错误的东西,我不确定 SSIS 正在处理哪个文件。但是我确实看到文件被执行并且数据在 SQL 中。让我知道如何查找 SSIS 当前正在运行的文件或它将处理的下一个文件。

4

2 回答 2

0

在执行 Excel 处理之前,在 ForEach 容器中添加一个脚本任务。在脚本任务中,添加您在 ForEach 循环中配置的变量,以将文件名保存到只读变量中。在脚本本身中,调用 FireInformation 事件,该事件将向 SSIS 中的进度日志添加一条信息性消息。在 FireInformation 调用中,将文件名变量的值作为消息参数传递。

这将让您看到正在处理的每个文件,以及失败时正在处理的文件。

FireInformation 帮助:http: //msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.runtime.idtscomponentevents.fireinformation.aspx

于 2014-07-12T21:42:22.633 回答
0

您可以添加一个脚本任务并记录在 foreach 循环中使用的变量。 在此处输入图像描述

在脚本任务编辑器中将该变量添加为只读变量,然后在 main 方法 (C#) 中添加如下内容:

public void Main()
{
    bool fireAgain = true;

Dts.Events.FireInformation(0, "Logging FELC variable", "File: " + Dts.Variables["User::FilePath"].Value.ToString(), string.Empty, 0, ref fireAgain); 
于 2014-07-12T21:54:34.977 回答