在“设置值”步骤中将参数从 SQL Server 代理作业传递到 SSIS 包

问题描述 投票:0回答:2

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

为了做到这一点,我在 SSIS 中“参数化”了我需要的值

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

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

运行作业时出现此错误:

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 Sever Agent 中分配它的方式。 (我的称呼是从网上的推荐中得到的)。

总结;我需要将参数从 sql server 代理发送到 SSIS 包。 另外*:我也愿意接受额外的建议,以了解如何让第三方在没有 SQL 知识的情况下轻松执行 SSIS 包。

附注建议我使用目录,但是当第三方必须在他的环境中使用该包时,可以使用目录吗?即,他能够在没有 Visual Studio 的情况下“部署”该软件包吗?

sql-server ssis etl jobs sql-job
2个回答
2
投票

我也遇到了这个错误:

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

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


0
投票

您正在 ssis 包中使用参数并尝试在 sql 作业中设置为包的变量。从参数中删除并在变量上使用相同的定义。在 sql 作业中,您正确设置了值。

谢谢

© www.soinside.com 2019 - 2024. All rights reserved.