Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ssis 为什么执行SQL任务在使用两个参数时失败?_Ssis - Fatal编程技术网

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

Ssis 为什么执行SQL任务在使用两个参数时失败?,ssis,Ssis,我正在使用SQL server数据工具(SSDT)2010。我在执行SQL任务时遇到以下错误: SQL语句设置为: INSERT INTO DerivedSoftware (Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID) VALUES ('?', '1', '1', '1', '1', ?) 正在使用的参数是数据类型String和Int32 如果我编辑executesql任务,使其只使用这些参数中的

我正在使用SQL server数据工具(SSDT)2010。我在执行SQL任务时遇到以下错误:

SQL语句设置为:

INSERT INTO DerivedSoftware
           (Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
    VALUES ('?', '1', '1', '1', '1', ?)
正在使用的参数是数据类型String和Int32

如果我编辑executesql任务,使其只使用这些参数中的一个,那么它可以正常工作。两个都可以。但尝试使用这两种方法都会失败,出现上述错误

在SQLServerManagementStudio中手动运行类似命令可以正常工作


有人知道原因吗?

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

发件人: 致: 问题原因: 当您将第一个参数的占位符括在单引号内时,它实际上被视为字符串值。我假设您已在
参数映射
选项卡上按以下顺序定义了参数:

  • String
    数据类型,换句话说
    VARCHAR
  • Long
    数据类型参数
现在,第一个问号被视为文本字符串值。执行SQL任务试图将字符串值传递给第二个问号,它实际上是一个整数字段。这导致执行SQL任务的
失败,因为它无法在整数字段中插入字符串。

值(“?”、“1”、“1”、“1”、“1”和?)
?你有一个单独的QOUTE('),而你没有。
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', ?);
INSERT INTO DerivedSoftware
(Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
VALUES (?, '1', '1', '1', '1', ?);