首页 > 解决方案 > 通过执行 SQL 任务将 SSIS 连接到 excel

问题描述

我在使用 SSIS 时遇到了一个令人沮丧的问题。背景如下:

  1. 我有一个包含 5 张纸的 excel 文件 - 第一张纸名为“Meta”(其余 4 张纸与手头的这个问题无关)
  2. 在 Meta 表中,我有一个名为“Tbl_Meta”的列表对象/表,有 6 列。listobject 有标题,但只会保存一行数据(因此第 1 行 (A1:F1) 上的标题和第 2 行 (A2:F2) 上的数据)
  3. Tbl_meta 中令人感兴趣的是第二列,它在单元格 B1 中有一个名为 GUID 的列标题。此列标题下的数据行在单元格“B2”中保存一个字符串值(在此示例中假设为“XXX-YYY-ZZZ-1234”)
  4. 我需要从这个 excel 文件中提取这个单个单元格值(“B2”)并将其保存在 SSIS 变量中。最终,此 SSIS 变量将用于使用上面第 3 点中提取的 GUID 值填充 3 个 sql 表。
  5. 我试图通过 SSIS 中的执行 SQL 任务来做到这一点。因此,我启动了一个新包并配置了一个 Excel 连接,跟踪了保存 Meta 表的 Excel 文件的路径,并在 SQL 查询中插入了 Select * from [Meta$B2:B3],正如各种谷歌搜索所示。
  6. 在第 5 点之前,我创建了一个变量(“输出”),它是 SQL 查询的结果,随后将用于将值插入到多个 SQL 表中。“输出”变量是包级别和数据类型字符串
  7. 同时,将记录集设置为“单行”,在结果集映射中,我将“输出”映射到结果名称“0”
  8. 相信一切都运行良好,我解雇了这个包裹。但是,我不断遇到下面粘贴的错误

在形成任何响应时,可能会考虑以下因素

  1. 我相信我在连接文件时没有犯任何错误
  2. 我已经检查(并重新检查)元表在单元格 B2 中有数据
  3. 没有任何参数化传递给 SQL 查询 - 它是直接输入 SQL 任务窗口的 SQL 查询字段的直接“从 [Meta$B2:B3] 中选择 *”操作
  4. 我在执行后插入了一个断点,果然本地窗口中的“输出”变量没有任何东西

考虑到一切,环境中似乎很少有一个成年人在一天的大部分时间里为此挣扎后流泪。

但是..............

你真正的痛苦就像我从不相信的一个小任务会让我做

错误:执行 SQL 任务时出现 0xC002F309,执行 SQL 任务:为变量“输出”分配值时出错:“指定了单行结果集,但未返回任何行。”。任务失败:执行 SQL 任务

标签: excelssisexecute-sql-task

解决方案


推荐阅读