2

我读了这个帖子: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]

4

1 回答 1

0

ForEach ADO Enumerator中的变量映射是强制性的,您的映射没问题。请将 User::IndivTable 变量的数据类型更改为字符串。

将变量 'User::CompanyInformation' 表达式更改为

"select [name],[address],[address 2],[city],[phone no_],[fax no_],  
[VAT Registration no_],[registration no_],[business type] from " + [User::IndivTable]  

变量User::IndivTableName包含 DataTable,因此不能在表达式中使用。您对其进行迭代并将第一列存储到User::IndivTable变量中。

于 2016-08-07T12:00:14.917 回答