Sql server 将变量值插入表中
在SSIS包中有几个变量,我希望将它们插入到表中 例如:-Sql server 将变量值插入表中,sql-server,sql-server-2005,ssis,Sql Server,Sql Server 2005,Ssis,在SSIS包中有几个变量,我希望将它们插入到表中 例如:- @financialMonth, @Status, @Comments 这些变量一直都使用基于查找、文件名、日期等的值填充,我想将它们存储在结果表中 使用executesql任务是实现这一点的方法吗 我是否需要调用存储过程并将这些变量作为参数传递 我已尝试将以下T-SQL放入SQLStatement属性 INSERT INTO FilesProcessed (ProcessedOn, ProviderCode, Financi
@financialMonth, @Status, @Comments
这些变量一直都使用基于查找、文件名、日期等的值填充,我想将它们存储在结果表中
使用executesql任务是实现这一点的方法吗
我是否需要调用存储过程并将这些变量作为参数传递
我已尝试将以下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
已处理文件,执行SQL任务:
执行查询“插入到”
文件已处理(已处理),
供应商代码,财务月,
文件名、状态、注释)选择GETDATE(),'ABC',201006, “DAG_201005_Testology.csv”, “已导入”,“成功”失败,错误为 下面的错误:“一个错误 提取结果时发生 转换为类型为(DBTYPE_I2)”的变量。 可能的故障原因:问题 使用查询“ResultSet”属性 未正确设置,未设置参数 正确,或连接不正确 正确建立 请 a) 。建议执行SQL任务是否是执行我想做的事情的方法 b) 。给我任何要注意和检查的提示或陷阱
提前感谢。确保值的数据类型与目标列数据类型匹配
请参阅:一些推测性的建议
输出
在上表中,定义FinancialMonth为int数据类型为 金融月国际4号 插入铸件时,如下所示:
(DT_STR,6,1252)@[User::financialMonth]
我认为这纯粹是数据类型与目标表定义不匹配。好的,下面是我所做的 我创建了一个执行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 expression按钮进行检查。从我对SSI的记忆来看,这似乎应该是可行的。(虽然很明显,您发布的代码根本没有使用变量)您遇到了什么错误?请尝试删除“as status”和“as comments”我粘贴了用于创建t-SQL的表达式代码。我试图硬编码T-SQL,看看更简单的代码是否有效。