我有一个 SSIS 包,它将在另一个数据库中运行,并且有一些参数取决于将要运行的环境(数据库名称、Excel 文件的文件路径、服务器名称等) 我想以一种方式设置这些,当我将包发送给第三方时,他们能够配置这些参数并使用 SQL Server 代理在 SQL 作业中运行包(这是我认为他们运行手动 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 的情况下“部署”该软件包吗?
我也遇到了这个错误:
DTExec:无法将 \Package.Variables[.....].Value 值设置为 ....
就我而言,我使用的是 VS2019。解决方案项目目标服务器是2019年,与我们测试的SQLServer(2017年)不同。将目标服务器更改为 2017 后,参数按预期传递到 dtsx。
您正在 ssis 包中使用参数并尝试在 sql 作业中设置为包的变量。从参数中删除并在变量上使用相同的定义。在 sql 作业中,您正确设置了值。
谢谢