我在SSIS包中有几个变量,我想插入表中。
例如: -
@financialMonth, @Status, @Comments
变量已经填充了基于查找,文件名,日期等的值,我希望将它们存储在结果表中。
正在使用执行SQL任务的方式吗?
我是否需要调用一个sproc并将这些变量作为参数传递?
我尝试将以下T-SQL放入SQLStatement属性
INSERT INTO FilesProcessed
(ProcessedOn, ProviderCode, FinancialMonth,
FileName, Status, Comments)
SELECT GETDATE(), 'ABC' , 201006,
'ABC_201005_Testology.csv',
'Imported','Success'
我尝试对上面的值进行硬编码以使其正常工作
这些是我插入的表格中的列
Column_name Type Computed Length
fileID int no 4
ProcessedOn datetime no 8
ProviderCode nchar no 6
FinancialMonth int no 4
FileName nvarchar no 510
Status nvarchar no 40
Comments nvarchar no 510
这是提供SQLStatementSource属性的表达式代码
"INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth,
FileName, Status, Comments) SELECT GETDATE() AS ProcessedOn, '"
+ @[User::providerCode] + "' , "
+ (DT_STR,6,1252)@[User::financialMonth] + ", '"
+ @[User::fileName] + "', 'Imported' AS Status,'Successfully' AS Comments "
不幸的是,我错过了一些东西,但却无法让它发挥作用。
我得到的错误信息是...... 错误:0xC002F210在日志条目中 FilesProcessed,执行SQL任务: 执行查询“INSERT INTO FilesProcessed(ProcessedOn, ProviderCode,FinancialMonth, FileName,Status,Comments)SELECT
GETDATE(),'ABC',201006, 'DAG_201005_Testology.csv', “导入”,“成功”失败了 以下错误:“错误 在提取结果时发生 到一个类型的变量(DBTYPE_I2)“。 可能的失败原因:问题 使用查询“ResultSet”属性 未正确设置,参数未设置 正确,或连接不 建立正确。
请
A)。建议执行SQL任务是否是我想做的事情。
B)。给我任何指示或陷阱,以留意并检查。
提前致谢。
答案 0 :(得分:5)
好的,这就是我做的。
我创建了一个执行SQL任务并进行了配置,因此: -
General Tab
ConnectionType = OLE DB
SQLSourceType = Direct Input
SQLStatement = (left blank)
BypassPrepare = True
ResultSet = None
Parameter Mapping
(none - leave blank)
Result Set
(none - leave blank)
Expressions
SQLStatementSource = "INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, FinancialMonth, FileName, Status, Comments) SELECT GETDATE(), '" + @[User::providerCode] + "' , " + (DT_STR,6,1252)@[User::financialMonth] + ", '" + @[User::fileName] + "', 'Import - Success', '" + @[User::fileComments] + "'"
然后只要我设置变量并在变量窗口中填充它们(表达式编辑器不会让你保存一个引用不存在的变量的表达式。当你回去时,保持记事本方便存储内容并编辑变量窗口,并在;)
中添加新变量慢慢构建表达式,定期使用Parse表达式按钮进行检查。
答案 1 :(得分:1)
确保VALUES的数据类型与目标列数据类型匹配。
答案 2 :(得分:0)
一些推测性的建议
错误消息显示将结果提取到类型变量(DBTYPE_I2)时发生错误。但这是一个直接的插入声明。除了受影响的行外,不应该有结果。您是否将任何参数映射错误地设置为Output
?
如果您尝试直接在管理工作室中运行错误消息中的SQL查询,该怎么办?这会给你一个错误吗?
答案 3 :(得分:0)
在上面的表中将FinancialMonth定义为int数据类型为
FinancialMonth int no 4
同时将铸造视为
(适用DT_STR,6,1252)@ [用户:: financialMonth] 强>
我觉得这纯粹是与目标表定义不匹配的数据类型。
感谢
prav