将dtexec SSIS包参数传递给SQL执行任务

时间:2016-06-01 06:34:44

标签: sql-server ssis

所以我在这里对SSIS很新。我有一些字段,我真的想为我的软件包全局设置,而不是继续使用数十个SSIS任务进行finagle。我正在以编程方式执行此操作,并了解到您可以设置这些调用包,如下所示:

SET @ExecuteStatement=
    'C:\Program Files\Microsoft SQL Server\120\DTS\Binn\DTExec /f "\\' + @DBInstance + '\SSIS\Universal.dtsx" 
        /set \Package.Variables[User::Email].Properties[Value]; "' + @Email + '" 
        /set \Package.Variables[User::SSASServer].Properties[Value]; "' + @SSASServer + '"
        /set \Package.Variables[User::MSSQLServer].Properties[Value]; "' + @MSSQLServer + '"
        /set \Package.Variables[User::SSASDatabaseName].Properties[Value]; "' + @SSASDatabaseName + '" 
        /set \Package.Variables[User::LinkedServerAlias].Properties[Value]; "' + @LinkedServerAlias + '" 
        /set \Package.Variables[User::ThreadCount].Properties[Value]; ' + CAST(@ThreadCount AS VARCHAR);


INSERT INTO @LOG
    EXEC @returncode = xp_cmdshell @ExecuteStatement

我的理解是,这将在包级别设置那些User ::变量的范围。我有几十个SQL执行任务,类似地调用SQL脚本,我真的想通过这些参数。显然这些SSIS变量在运行时设置,因此任何引用@ [User :: Email]的sproc最终都是未定义的。

如何确保任务(执行SQL和邮件)可以访问这些变量,以便每个包在用户运行时都是独立的?我正在尝试避免可以覆盖的全局变量,以便多个人可以运行它并根据需要配置字段。

提前致谢!

0 个答案:

没有答案