gpt4 book ai didi

ssis - 为什么在使用两个参数时执行 SQL 任务会失败?

转载 作者:行者123 更新时间:2023-12-05 01:19:48 24 4
gpt4 key购买 nike

我正在使用 SQL Server Data Tools (SSDT) 2010。我在执行 SQL 任务中遇到以下错误:

Multiple-step OLE DB operation generated errors. Check each OLE DB status value, 
if available. No work was done

SQL 语句设置为:

INSERT INTO DerivedSoftware
(Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
VALUES ('?', '1', '1', '1', '1', ?)

正在使用的参数是数据类型 StringInt32

如果我编辑执行 SQL 任务,使其仅使用这些参数之一,它就可以正常工作。任何一个都可以正常工作。但是尝试同时使用两者都失败并出现上述错误。

在 SQL Server Management Studio 中手动运行类似的命令效果很好。

有人知道为什么吗?

最佳答案

更改查询语句以删除第一个参数占位符周围的单引号 (')。将其从 '?' 更改为简单的 ?

来自:

INSERT INTO DerivedSoftware
(Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
VALUES ('?', '1', '1', '1', '1', ?);

收件人:

INSERT INTO DerivedSoftware
(Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
VALUES (?, '1', '1', '1', '1', ?);

问题原因:

当您将第一个参数占位符括在单引号中时,它实际上被视为字符串值。我假设您已经在 Parameter Mapping 选项卡上按照下面提到的顺序定义了参数:

  • String 数据类型,换句话说 VARCHAR
  • Long数据类型参数

现在,第一个问号被视为文字字符串值。 Execute SQL Task 试图将字符串值传递给第二个问号,它实际上是一个整数字段。这导致 Execute SQL Task 失败,因为它无法将字符串插入整数字段。

关于ssis - 为什么在使用两个参数时执行 SQL 任务会失败?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14942586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com