如何通过作业步骤高级选项卡更改SSIS包中的SqlStatementSource
我部署了一个ssis包,并创建了一个执行该包的sql代理作业。我需要通过作业步骤高级选项卡更改包中某个sql任务中的SqlStatementSource。有人能帮我怎么做吗?我在某个地方读到了它的可能,但记不起它到底是如何做到的 根据源提供程序,您有两种选择来更改查询 DFT测试使用OLE DB源,DFT T2是ADO.NET源 我的数据流是脚本任务的源 源代码是一个简单的在线查询:如何通过作业步骤高级选项卡更改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
选择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作业步骤编辑器中,您将使用“设置值”选项卡访问键值对。您看过在项目部署模型中使用不同的环境吗?