如何通过作业步骤高级选项卡更改SSIS包中的SqlStatementSource

如何通过作业步骤高级选项卡更改SSIS包中的SqlStatementSource,sql,sql-server,ssis,Sql,Sql Server,Ssis,我部署了一个ssis包,并创建了一个执行该包的sql代理作业。我需要通过作业步骤高级选项卡更改包中某个sql任务中的SqlStatementSource。有人能帮我怎么做吗?我在某个地方读到了它的可能,但记不起它到底是如何做到的 根据源提供程序,您有两种选择来更改查询 DFT测试使用OLE DB源,DFT T2是ADO.NET源 我的数据流是脚本任务的源 源代码是一个简单的在线查询:选择1作为Foo 脚本任务只是触发一个OnInformation事件,这样我就可以在数据行流经时看到它们 usi

我部署了一个ssis包,并创建了一个执行该包的sql代理作业。我需要通过作业步骤高级选项卡更改包中某个sql任务中的SqlStatementSource。有人能帮我怎么做吗?我在某个地方读到了它的可能,但记不起它到底是如何做到的

根据源提供程序,您有两种选择来更改查询

DFT测试使用OLE DB源,DFT T2是ADO.NET源

我的数据流是脚本任务的源

源代码是一个简单的在线查询:
选择1作为Foo

脚本任务只是触发一个OnInformation事件,这样我就可以在数据行流经时看到它们

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
using Microsoft.SqlServer.Dts.Runtime.Wrapper;

[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
public class ScriptMain : UserComponent
{

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        bool fireAgain = false;
        ComponentMetaData.FireInformation(0, "Foo value", Row.Foo.ToString(), string.Empty, 0, ref fireAgain);
    }
}
OLE DB源 这需要你提前完成工作。可以通过字符串类型的SSIS变量控制源语句。在这里,我选择将其命名为
@[User::QuerySource]
,并将OLE DB源设置为使用变量作为查询源

可以在运行时/SQL代理中配置的

DTEXEC /file so_31100091.dtsx /set "\Package.Variables[User::QuerySource].Properties[Value]";"SELECT 2 AS Foo" /REP I
上面的命令将运行包并将
SELECT 2 AS Foo
的值分配给位于包根的变量
QuerySource
。最后,我让引擎报告信息事件,以便将其记录下来

ADO网络源代码 这是为数不多的几次,ADO网络源代码可以有所帮助。它可以直接配置,无需修改包本身

DTEXEC /file so_31100091.dtsx /set "\Package\DFT T2.Properties[[ADO_SRC tempdb].[SqlCommand]]";"SELECT 3 AS Foo" /REP I
在这里,我使用命令
选择3作为Foo
,然后设置任务“DFT T2”,它的源代码是SqlCommand的属性“ADO_SRC tempdb”

拉普 需要注意的重要一点是,提供的查询必须与签名(列名和数据类型)匹配


在上面的示例中,我手动执行了SSIS包。在SQL Agent作业步骤编辑器中,您将使用“设置值”选项卡访问键值对。

您看过在项目部署模型中使用不同的环境吗?