问题标签 [execute-sql-task]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
530 浏览

sql - SSIS执行SQL任务多步骤参数映射

我有一个 DTSX 文件,该文件有一个更新语句,该语句在更新语句中从自身中选择,并且正在填充临时数据库。它对更新语句中的变量使用参数映射。

我将其重写为首先将 select 语句运行到临时表中,然后运行 ​​update 语句,但我收到以下错误“多步 OLE DB 操作生成错误...”

我对 SSIS 包不是很熟悉,我想知道我是否写错了语句。

下面是查询。注意底部的更新语句有“?” 在其中,我认为可以将参数映射到它。

这是完整的错误消息:

构建事实(2019 年 8 月 30 日晚上 10:40:25)

消息:ExecutionID:失败代码 #-4001Source:更新 stg_fct_carrierfi​​nancial 子组件中废弃的暗键:执行 SQL 任务错误代码:-1073548784 描述:执行查询“

select cafi_key, newfrequency.fr_key as cafi_...”失败并出现以下错误:“多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。未完成任何工作。”。可能的失败原因:查询有问题、“ResultSet”属性设置不正确、参数设置不正确或连接未正确建立。

来源:更新 stg_fct_startstoprestarttrans 子组件中的废弃键:执行 SQL 任务错误代码:-1073548784 描述:执行查询“

select stsprstr_key, newfrequency.fr_key as s...”失败,出现以下错误:“多步 OLE DB 操作生成错误。检查每个 OLE DB 状态值(如果可用)。未完成任何工作。”。可能的失败原因:查询有问题、“ResultSet”属性设置不正确、参数设置不正确或连接未正确建立。

经过时间:7800 秒经过时间:02:09:59 返回代码:-4001 (SSIS_EXECUTE_FAILURE)

0 投票
0 回答
393 浏览

hive - Apache NiFi ExecuteSQL 不适用于 where 子句

我正在尝试将具有分区的多个表中的数据从同一数据库加载到另一个表。为此,我遵循以下程序:

在 executeSQL 处理器中,出现以下异常:

在 Replacetext 处理器中,我的查询如下: select * from '${$db.table.fullname}'

0 投票
0 回答
416 浏览

excel - 通过执行 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 任务

0 投票
1 回答
372 浏览

ssis - SSIS:按列完整结果集排序以执行 SQL 任务

我在 Foreach 循环容器之前放置了一个执行 SQL 任务,以便对于完整结果集返回的每一行,脚本任务将其插入 Excel 行。

但是,在一个特定的列上,我想在遍历每一行之前按 ASC 顺序对完整结果集进行排序,以便我可以按特定顺序获得完整结果集。

我尝试在执行 SQL 任务中的 SQL 脚本中使用 Order By Clause,但它没有按预期排序。

有没有一种方法可以在传递到另一个进程(即脚本任务)之前按单列对结果集对象中的查询结果进行排序?

0 投票
1 回答
1021 浏览

sql-server - SSIS ForEach - 获取集合的当前值

我有一个从 ADO.NET SQL 查询填充的变量 User:AllBatches (ObJect)。SQL 查询返回一列整数。我的包裹的那部分正在工作。

下一步是使用 User:AllBatches 作为变量枚举器的 ForEach 循环。

在变量映射部分中,选择一个变量映射到集合变量索引 0。但是,如果我选择 Object 以外的任何变量类型,则包错误。

如果我选择一个对象变量,那么我的 SQL 任务将失败,参数绑定上的数据类型不受支持,然后我无法获取要在循环内的 SQL 任务中使用的对象的值。

如果我将其设置为 Int32,那么我会得到 The Tyoe of the Variable (DBNULL) 与当前变量类型 (INT32) 不同。

因此,如果变量集合映射仅支持对象类型,我如何从该输出对象变量中获取 INTEGER 值。

0 投票
0 回答
70 浏览

sql - SSIS 不插入多于一行

我正在使用执行 Sql 任务来更新时间维度我正在使用此代码

当我在 sql server 上尝试它时它可以工作,但在 SSIS 中它只插入了第一行。

这是包控制流程的屏幕截图:

在此处输入图像描述

0 投票
0 回答
43 浏览

excel - 在 SQL 任务中使用 drop 和 create table 语句覆盖 Excel 目标无法正常工作。新数据正在添加为新记录

实际上,我已经设计了包来用 OLEDB 数据源覆盖 excel 目标。我的 SQL Server 数据库表中有 5000 条记录。第一次当 SISS 包执行时,相同数量的记录被复制到 excel 目的地。在病房的第二次执行中,相同的 5000 条数据被复制为同一个 Excel 表中的新记录。例如,第一次执行后,目的地有 5000 条记录,第二次 10000,第三次 15000 等等。但我的目标是,无论我执行多少次,excel 数据都应该保持 5000,除非我修改源数据计数。我使用 SQL 任务来覆盖 excel 数据。我使用了 drop 语句,然后是 create 语句。然后我也在成功执行包后在excel中重复数据。

下面是我为在 SQL 任务中删除和重新创建 excel 表而编写的代码。

0 投票
1 回答
240 浏览

ssis - SSIS - 如何使用执行 SQL 任务的结果来调用 Web 服务

我需要使用 SQL SELECT 的结果,它应该返回一个 ID 数组,以便在我的 foreach 循环中遍历它。我对SSIS很陌生。我创建了执行 SQL 任务,连接到数据库并写入

然后我创建了 Script Task 并将这两个组件与 Constraint 连接起来。但我不知道如何将 SQL 任务的结果传递给脚本任务中的对象。

0 投票
1 回答
780 浏览

sql-server - 启动SSIS包时不支持包部分调试

这个很奇怪的问题。当我按下开始按钮执行 SSIS 项目时,它显示“不支持包部分调试”,仅此而已。我使用数据流任务创建控制流并执行 SQL 任务。我有一个简单的用例来使用变量计算行数,并存储包名称和 SQL 服务器上表中的行数。当我打开错误列表时,它显示

保存 PackagePart1.dtsxp 时出错:控制流包部分需要仅包含一个可执行文件。
C:\Users\pcp\Documents\Visual Studio 2015\Projects\Transformations\Transformations\PackagePart1.dtsxp

这是我收到的错误的屏幕截图.

0 投票
2 回答
328 浏览

sql-server - SSIS 执行 SQL 任务 - 输入字符串格式错误

我有一个执行 SQL 任务,它尝试执行存储过程,如下所示:

我有 4 个变量映射到参数。忽略输出参数,这些都是映射到 NVARCHAR 参数的字符串(正如存储过程所期望的那样)。

当我运行包时,一个错误告诉我执行失败,消息输入字符串格式不正确。但是,当我使用断点查找输入参数的运行时值(或至少映射到它们的变量)并使用运行时值在 SSMS 中执行同一行 SQL 时,它工作正常。

任何人都可以帮忙吗?我对此束手无策。我什至无法找出导致问题的确切参数,尽管它可能都是因为值遵循相同的格式。

更多细节:

  • 连接类型:OLE DB
  • 输入变量:字符串 =schema.table
  • 映射参数: NVARCHAR, ParamName = 0, ParamSize =-1

更新

通过制作一个调用精简过程的新执行 sql 组件解决了该问题。然后我慢慢地向过程和附加参数添加代码行,直到到达我开始使用的相同组件,现在它可以工作了。比较原始任务和重建任务,我发现完全没有差异(与过程相同),所以我不知道为什么会出现这个问题。