SSIS目录环境变量

时间:2017-09-24 14:14:41

标签: sql-server ssis sql-server-2012

我试图在运行时使用环境变量来定义连接字符串的参数。

我试图关注some guides online。所以我在包中定义了参数:

enter image description here

现在问题:
指南工作,唯一的问题是每次执行包时,我都需要手动选择我想要使用的环境文件夹,尽管我已经在包中执行了。

enter image description here

  

SSIS并不知道要使用哪个环境(即使只有一个环境存在)

如何覆盖此内容?

我看到我可以使用预定的工作,并告诉它使用哪个环境,但这对我没有帮助,因为我通过服务和程序运行我的包。我需要一些方法来告诉它选择哪种环境。

1 个答案:

答案 0 :(得分:1)

您不能设置一个环境 - 环境的想法是您选择在执行期间要使用哪个环境。正如你所指出的,你可以在工作中做到这一点。这是否意味着代理人的工作具有超自然的力量?不可以。如果使用执行引用环境的包的步骤编写作业脚本,您将看到熟悉的dtexec命令,例如:

    /ISSERVER "\"\SSISDB\test\test1\Incremental.dtsx\"" /SERVER "\"DESKTOP-NT4K1HQ\"" 
/ENVREFERENCE 1 /Par "\"$ServerOption::LOGGING_LEVEL(Int16)\"";1 
/Par "\"$ServerOption::SYNCHRONIZED(Boolean)\"";True /CALLERINFO SQLAGENT /REPORTING E

我想在此强调的是 / ENVREFERENCE 1 参数 - 以下是代理作业如何知道要选择的环境。

所以你的问题的答案是你总是需要在执行包时选择一个环境(当然如果你想要一个使用它)。如果是目录程序,您可以执行类似的操作(this article):

    EXEC [SSISDB].[catalog].[create_execution] @package_name=N'Child1.dtsx', @execution_id=@execution_id OUTPUT, @folder_name=N'TestDeply4', @project_name=N'Integration Services Project1', 
@use32bitruntime=False, 
@reference_id=1

@reference_id = 1是您的环境参考。要查找您的环境ID,您必须查询[SSISDB].[catalog].[environments]视图。

我是否回答了您的问题,或者您是否以不同的方式执行了包裹?如果您确定永远不会需要多个环境,那么您将完全不需要环境变量。