如何将参数传递给SSIS OLE DB源中的OpenQuery

时间:2014-06-13 20:48:21

标签: sql sql-server ssis bids

如何将参数传递给SSIS中OLE DB源中的Openquery SQL语句?

实施例:    标准SQL命令:SELECT FIRSTNAME,LASTNAME FROM CUSTOMERS WHERE PERSONID =?

OpenQuery命令不起作用:

SELECT * 
FROM OPENQUERY(CRMDB
            , 'SELECT FIRSTNAME, LASTNAME FROM PUBLIC.CUSTOMERS WHERE PERSONID = ''?'' ')

如果需要,请提供更多详细信息:

  1. SSIS包将使用ForEach循环使用OpenQuery查询链接服务器,因此需要为其传递参数。
  2. 必须使用链接服务器并且必须使用OpenQuery。
  3. 表太大而无法导入到本地表中以进行查询。
  4. 任何帮助都将不胜感激。

    编辑: 将SQL SERVER 2008与Visual Studio 2008 BIDS一起使用

2 个答案:

答案 0 :(得分:0)

我没有看到它用得多,但如果您遇到链接服务器查询,EXECUTE...AT是完美的。

DECLARE @PersonId INTEGER = <value>;
EXECUTE ('SELECT FIRSTNAME, LASTNAME FROM PUBLIC.CUSTOMERS WHERE PERSONID = ?',
         @PersonId) AT CRMDB;

这需要为链接服务器启用RPCRPC Out

Linked server properties

答案 1 :(得分:-1)

选择 * from openquery(MYSQL_LOCAL,'select * from table1 WHERE District!='''' and month(q_0)=1 and year(q_0)=2021 and district='''+@District + '''') OpenQuery 命令不起作用: +