0

我使用 MS Visual Studio 2008 创建了一个商业智能项目。在 dtsx 中,我有一个简单的邮件任务。如何使用 dtsConfig 文件中的 MailTo 变量?

<Configuration ConfiguredType="Property" Path="\Package.Variables[User::MailTo].Properties[Value]" ValueType="String"> <ConfiguredValue>hello@world.com</ConfiguredValue> </Configuration>

现在我正在使用 Windows 批处理脚本来运行这个 dtsx 包。

dtexec /f "D:\MyPath\Sample.dtsx" /conf "D:\MyPath\Sample.dtsConfig"

当我在更改配置文件变量后执行时[User::MailTo],它没有工作。它将邮件发送到以前的邮件ID。

如何[User::MailTo]在运行时使用 dtsConfig 文件中的变量?

提前致谢...

4

1 回答 1

0

变量存在于 SSIS 的根/包级别。变量可以存在于其他范围内,因此确定一个变量存在的位置很重要。

您正在使用的配置文件在运行时将“hello@world.com”的值分配给@[User::MailTo]

如果您引发了一个事件,您可以看到 MailTo 的值从设计时值 TempExpt@other.net 更改为配置文件中的值。现在的诀窍是让邮件任务使用变量而不是硬编码值。

这是通过表达式完成的。SSIS 中的每个对象都公开一个 Expressions 集合。您可能有一个看似简单的包,但它可以从这里连接到无穷大,表达式链接到其他表达式。我经常提到专业人士和笨蛋之间的区别在于对表达式、配置和日志的明智使用。

双击发送邮件任务,应该有一个表达式选项卡。在那里,在第一个网格中,单击下拉菜单,直到找到“收件人”字段。在下一列中,使用您的变量@[User::MailTo]

虽然您可以使用编辑器在对象上构造复杂的表达式,但我强烈建议不要这样做。创建一个变量,在那里和您的对象中使用邪恶的复杂表达式逻辑,只需引用该变量。原因是支持和维护。您无法检查对象以查看表达式是什么。如果它们不好,您的包裹就会爆炸,您将无法进行故障排除。如果它只是一个表达式,您可以在它们上设置一个断点,然后检查您的变量以查找有什么问题。

于 2013-09-18T13:05:40.493 回答