动态传递 Table 名称 - 使用来自变量的 SQL 命令
Dynamically Passing Table Names - using SQL Command from Variable
我读了这个线程:SSIS : Dynamically passing Table names 这正是我想要实现的目标。我到了创建字符串变量的地步。
但是,在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 描述:"Statement(s) could not be prepared."。
OLE DB 记录可用。来源:"Microsoft SQL Server Native Client 11.0" Hresult:0x80040E14 描述:"Must declare the table variable "@".".
感谢您就此处可能出现的问题提供帮助。
以下是我设置的组件。
执行SQL任务:
SELECT name from sys.tables WHERE name like'%$Company Information'Order by name
Result Set: Variable Name = User::IndivTableName; Result Name = 0; Data Type=Object
对于每个循环容器:
Enumerator: Foreach ADO Enumerator
ADO Object source variable: User::IndivTableName
Enumeration mode: Rows in the first table
(Is this needed?) Variable mappings: Variable = User::IndivTable; Index=0; Data Type = Object
字符串变量:
Variable Name: User::CompanyInformation
Expression:
"select [name],[address],[address 2],[city],[phone no_],[fax no_],
[VAT Registration no_],[registration no_],[business type] from " + "@[User::IndivTableName] "
Evaluated Value:
select [name],[address],[address 2],[city],[phone no_],[fax no_],
[VAT Registration no_],[registration no_],[business type] from @[User::IndivTableName]
数据源编辑者:
Data Access Mode: SQL command from variable
Variable Name: User::CompanyInformation
Variable Value:
select [name],[address],[address 2],[city],[phone no_],[fax no_],
[VAT Registration no_],[registration no_],[business type] from @[User::IndivTableName]
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::IndivTable名称包含DataTable,不能在表达式中使用。您遍历它并将第一列存储到 User::IndivTable 变量中。
我读了这个线程:SSIS : Dynamically passing Table names 这正是我想要实现的目标。我到了创建字符串变量的地步。
但是,在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 描述:"Statement(s) could not be prepared."。 OLE DB 记录可用。来源:"Microsoft SQL Server Native Client 11.0" Hresult:0x80040E14 描述:"Must declare the table variable "@".".
感谢您就此处可能出现的问题提供帮助。
以下是我设置的组件。
执行SQL任务:
SELECT name from sys.tables WHERE name like'%$Company Information'Order by name Result Set: Variable Name = User::IndivTableName; Result Name = 0; Data Type=Object
对于每个循环容器:
Enumerator: Foreach ADO Enumerator
ADO Object source variable: User::IndivTableName
Enumeration mode: Rows in the first table
(Is this needed?) Variable mappings: Variable = User::IndivTable; Index=0; Data Type = Object
字符串变量:
Variable Name: User::CompanyInformation
Expression: "select [name],[address],[address 2],[city],[phone no_],[fax no_], [VAT Registration no_],[registration no_],[business type] from " + "@[User::IndivTableName] "
Evaluated Value: select [name],[address],[address 2],[city],[phone no_],[fax no_], [VAT Registration no_],[registration no_],[business type] from @[User::IndivTableName]
数据源编辑者:
Data Access Mode: SQL command from variable
Variable Name: User::CompanyInformation
Variable Value: select [name],[address],[address 2],[city],[phone no_],[fax no_], [VAT Registration no_],[registration no_],[business type] from @[User::IndivTableName]
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::IndivTable名称包含DataTable,不能在表达式中使用。您遍历它并将第一列存储到 User::IndivTable 变量中。