Ssis 为什么执行SQL任务在使用两个参数时失败?
我正在使用SQL server数据工具(SSDT)2010。我在执行SQL任务时遇到以下错误: 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任务,使其只使用这些参数中的
INSERT INTO DerivedSoftware
(Name, VendorID, RuleID, GroupID, SourceEnumID, DeviceID)
VALUES ('?', '1', '1', '1', '1', ?)
正在使用的参数是数据类型String和Int32
如果我编辑executesql任务,使其只使用这些参数中的一个,那么它可以正常工作。两个都可以。但尝试使用这两种方法都会失败,出现上述错误
在SQLServerManagementStudio中手动运行类似命令可以正常工作
有人知道原因吗?更改查询语句以删除第一个参数占位符周围的单引号(
”
)。将其从'?'
更改为简单的?
发件人:
致:
问题原因:
当您将第一个参数的占位符括在单引号内时,它实际上被视为字符串值。我假设您已在参数映射
选项卡上按以下顺序定义了参数:
数据类型,换句话说String
VARCHAR
数据类型参数Long
失败,因为它无法在整数字段中插入字符串。值(“?”、“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', ?);