我试图在运行时使用环境变量来定义连接字符串的参数。
我试图关注some guides online。所以我在包中定义了参数:
现在问题:
指南工作,唯一的问题是每次执行包时,我都需要手动选择我想要使用的环境文件夹,尽管我已经在包中执行了。
SSIS并不知道要使用哪个环境(即使只有一个环境存在)
如何覆盖此内容?
我看到我可以使用预定的工作,并告诉它使用哪个环境,但这对我没有帮助,因为我通过服务和程序运行我的包。我需要一些方法来告诉它选择哪种环境。
答案 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]
视图。
我是否回答了您的问题,或者您是否以不同的方式执行了包裹?如果您确定永远不会需要多个环境,那么您将完全不需要环境变量。