SSIS Ole DB 源作为带有参数的链接服务器的存储过程
SSIS Ole DB Source as Stored procedure from linked server with parameters
所有。
我正在使用来自链接服务器的存储过程。我想在ole db源中使用程序。
我编写了在 SSIS 中有效的查询。
select ID,
LAST_NAME_ENG,
LAST_NAME_G,
FST_NAME_ENG,
FST_NAME_G,
BIRTHDATE
from openquery (linkedserver,
'exec [linkedserver].get_records @SESSION_ID = 12 , @SYSTEM = ''oCRM'', @ENTITY_NAME = ''CLIENT''
WITH RESULT SETS (([ID] [int] NOT NULL,
[LAST_NAME_ENG] [varchar](50) NOT NULL,
[LAST_NAME_G] [varchar](50) NOT NULL,
[FST_NAME_ENG] [varchar](50) NOT NULL,
[FST_NAME_G] [varchar](50) NOT NULL,
[BIRTHDATE] [date] NOT NULL))');
我可以在 SSIS ole db 源中使用它并成功获取所需数据。但是下一步就出现了问题:
我需要将参数从 SSIS 传递给 @SESSION_ID 而不是 '12'。而且我找不到正确的方法。
有很多建议使用动态 sql 并使用所需的参数值构建完整的查询字符串然后执行它,但如果我愿意这样做 - SSIS 无法从动态查询中获取列数据.
有什么办法可以解决吗?
任何想法都会有所帮助。
谢谢。
问候,Yuriy。
创建一个字符串变量,例如,SQL_Query。在变量定义中 - 设置 EvaluateAsExpression 并将表达式定义为 "your SQL statement ... @SESSION_ID = " + [User::Session_ID_Variable] + " rest of SQL statement"
,其中 Session_ID_Variable 包含您的条件值。如果 Session_ID_Variable 不是字符串 - 您必须使用 (DT_WSTR, length)
将其转换为字符串。 SQL_Query 中的结果将是您的目标 SQL 表达式。
然后在 OLE DB 源中 - 将变量指定为 SQL 命令源和 select [User::SQL_Query].
在所有情况下,存储过程必须 return 相同格式的结果集。 SP return 没有结果集将使 DataSource 失败。
所有。
我正在使用来自链接服务器的存储过程。我想在ole db源中使用程序。
我编写了在 SSIS 中有效的查询。
select ID,
LAST_NAME_ENG,
LAST_NAME_G,
FST_NAME_ENG,
FST_NAME_G,
BIRTHDATE
from openquery (linkedserver,
'exec [linkedserver].get_records @SESSION_ID = 12 , @SYSTEM = ''oCRM'', @ENTITY_NAME = ''CLIENT''
WITH RESULT SETS (([ID] [int] NOT NULL,
[LAST_NAME_ENG] [varchar](50) NOT NULL,
[LAST_NAME_G] [varchar](50) NOT NULL,
[FST_NAME_ENG] [varchar](50) NOT NULL,
[FST_NAME_G] [varchar](50) NOT NULL,
[BIRTHDATE] [date] NOT NULL))');
我可以在 SSIS ole db 源中使用它并成功获取所需数据。但是下一步就出现了问题:
我需要将参数从 SSIS 传递给 @SESSION_ID 而不是 '12'。而且我找不到正确的方法。
有很多建议使用动态 sql 并使用所需的参数值构建完整的查询字符串然后执行它,但如果我愿意这样做 - SSIS 无法从动态查询中获取列数据.
有什么办法可以解决吗? 任何想法都会有所帮助。
谢谢。
问候,Yuriy。
创建一个字符串变量,例如,SQL_Query。在变量定义中 - 设置 EvaluateAsExpression 并将表达式定义为 "your SQL statement ... @SESSION_ID = " + [User::Session_ID_Variable] + " rest of SQL statement"
,其中 Session_ID_Variable 包含您的条件值。如果 Session_ID_Variable 不是字符串 - 您必须使用 (DT_WSTR, length)
将其转换为字符串。 SQL_Query 中的结果将是您的目标 SQL 表达式。
然后在 OLE DB 源中 - 将变量指定为 SQL 命令源和 select [User::SQL_Query].
在所有情况下,存储过程必须 return 相同格式的结果集。 SP return 没有结果集将使 DataSource 失败。