将参数从 SQL 服务器代理作业传递到步骤 "set value" 上的 SSIS 包

Pass parameters from SQL Server Agent job to SSIS Package on Step "set value"

我有一个 SSIS 包,它将 运行 在另一个数据库中,并且有一些参数将取决于 运行ning 的环境(数据库名称,文件路径 excel 文件、服务器名称等) 我想以一种方式设置这些,当我将包发送给第三方时,他们能够使用 SQL 服务器代理在 SQL 作业中配置这些参数和 运行 包(这是我认为他们 运行 手动 SSIS 包的最简单方法)。

为了做到这一点,我在 SSIS 中有 "parametrized" 我需要的值

这些参数是在包级别设置的。

我现在要做的是从 SQL Server Agent 作业配置步骤设置数据选项卡传递这些参数。

我在 运行 作业时遇到此错误:

Executed as user: NT Service\SQLSERVERAGENT. Microsoft (R) SQL Server Execute Package Utility  Version 14.0.2027.2 for 32-bit  Copyright (C) 2017 Microsoft. All rights reserved.    
Started:  9:47:32 PM  
Error: 2020-04-05 21:47:32.91     
Code: 0xC001F016     
Source: Package      
Description: Changing the Value of a variable failed because it is a parameter variable. Parameter variables are read-only.  End Error  
DTExec: Could not set \Package.Variables[Database_Name].Value value to dev.  
Started:  9:47:32 PM  
Finished: 9:47:32 PM  
Elapsed:  0.125 seconds.  
The package execution failed.  The step failed.

这些是重要的行:

DTExec: Could not set \Package.Variables[Database_Name].Value value to dev.  

我认为设置此变量有问题,我不知道这是我在 SSIS 中设置错误还是我试图在 SQL 服务器代理中分配它的方式。 (我这样称呼它是我从网上推荐的)。

总结一下;我需要将参数从 sql 服务器代理发送到 SSIS 包。 另外*:我也愿意接受额外的建议,以便在 SQL 不知情的情况下为第三方轻松执行 SSIS 包。

P.S。我被推荐使用目录,但是当第三方必须在他的环境中使用这个包时,这是否可以使用?即他是否可以在没有 visual studio 的情况下 "deploy" 包裹?

我也遇到了这个错误:

DTExec:无法将 \Package.Variables[.....].Value 值设置为....

就我而言,我使用的是 VS2019。方案项目目标服务器为2019,与我们测试的SQLServer(2017)不同。将目标服务器更改为 2017 后,参数按预期传递给了 dtsx。