我读了这个帖子:SSIS:动态传递表名,这正是我想要实现的。我到了创建字符串变量的地步。
但是,在 OLEdb 源代码编辑器中,当我选择使用 SQL Command from Variable 时,预览给出了以下错误提示:
HRESULT 异常:0xC0202009 数据流任务 [OLE DB 源 [37]] 出错:SSIS 错误代码 DTS_E_OLEDBERROR。发生 OLE DB 错误。错误代码:0x80040E14。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0”Hresult:0x80040E14 描述:“无法准备语句。”。OLE DB 记录可用。来源:“Microsoft SQL Server Native Client 11.0” Hresult:0x80040E14 描述:“必须声明表变量“@”。”。
感谢您对这里可能出现的问题的一些帮助。
以下是我设置的组件。
执行 SQL 任务:
SELECT name from sys.tables WHERE name like '%$Company Information'Order by name 结果集:变量名 = User::IndivTableName; 结果名称 = 0;数据类型=对象
对于每个循环容器:
枚举器:Foreach ADO 枚举器
ADO 对象源变量:User::IndivTableName
枚举模式:第一个表中的行
(这需要吗?) 变量映射:Variable = User::IndivTable; 索引=0;数据类型 = 对象
字符串变量:
变量名称:用户::公司信息
表达式:"select [name],[address],[address 2],[city],[phone no_],[fax no_],[VAT Registration no_],[registration no_],[business type] from "+" @[用户::IndivTableName] "
评估值:从@[User ::IndivTableName]
数据源编辑器:
数据访问模式:来自变量的 SQL 命令
变量名称:用户::公司信息
变量值:select [name],[address],[address 2],[city],[phone no_],[fax no_],[VAT Registration no_],[registration no_],[business type] from @[User ::IndivTableName]