gpt4 book ai didi

ssis - 如何跨包内的脚本任务访问变量?

转载 作者:行者123 更新时间:2023-12-01 09:03:07 24 4
gpt4 key购买 nike

我在一个序列容器中有两个 SSIS 脚本任务。我已经声明了变量 StartTime Script Task 1 .我想在 Script Task 2 中使用这个变量.

是否可以访问变量StartTimeScript Task 2 ?如何访问变量?

最佳答案

在 SSIS 包中创建变量时,可以定义变量的范围。此范围定义控制流上的哪些任务对变量具有可见性。
描述变量作用域的示例包:
这是一个示例 SSIS 包。
我创建了一个包,其中包含一个序列容器和两个脚本任务。我在不同的范围内创建了四个变量。
如果要查看所有定义在不同作用域下的变量,需要勾选Variables上的第四个按钮 Pane 。该选项由屏幕截图中的箭头指示。
以下是变量在每个作用域中的工作方式:
StartTime_Package - 该变量在 MyPackage 范围内声明,这也恰好是包名。这是顶级范围。此变量将对控制流上的所有任务可见。
StartTime_Sequence - 该变量在 Sequence Container 范围内声明,这是序列容器任务的给定名称。此变量仅对序列容器和序列容器内的任务可见。
StartTime_Task1 - 该变量在 Script Task 1 范围内声明,这是序列容器中第一个脚本任务的给定名称。此变量仅对第一个脚本任务可见,对其他任务不可见。
StartTime_Task2 - 该变量在 Script Task 2 范围内声明,这是序列容器中第二个脚本任务的给定名称。此变量仅对第二个脚本任务可见,对其他任务不可见。
Variables Scope
如何检查任务是否可以访问变量?
这是一种更简单的方法来确定特定任务是否可以访问变量。让我们取消选中变量 Pane 上的第三个选项。
点击 Script Task 1 .您会注意到变量 StartTime_Task2未显示在变量 Pane 中,因为 Script Task 1没有它的可见性。
同样,您可以单击任务并验证它可以访问哪些变量。
您必须根据您的要求决定变量的范围。如果要跨任务共享变量的值,在最顶层的包级别范围内声明它是安全的。
如果您非常确定不会在特定任务之外访问某个变量,则在该任务的范围级别声明它是安全的。
Scope of the variables.
如何使用脚本任务读取变量或将值写入变量?
双击脚本任务,会出现脚本任务编辑器。您必须确定您是只想读取变量值还是在任务中修改它。我将修改一个变量值,然后在消息框中显示该值。为此,我必须选择一个已在包中声明的变量,并为脚本任务提供读写访问权限。单击 ReadWriteVariables 旁边的省略号按钮属性(property)
Script Task Editor
Select Variables 将列出脚本任务有权访问的变量(系统级和用户级)。我要挑StartTime_Package多变的。
Select Variables
您现在可以看到属性中列出的变量。您可以选择多个变量。单击“编辑脚本”,这样我们就可以修改 C# 代码以将值写入变量然后读取它。
Edit Script
将以下代码粘贴到脚本任务中。第一行分配值,这里我只是在今天的日期上加上 7 天。第二行在消息框中显示变量的值。

public void Main()
{
Dts.Variables["StartTime_Package"].Value = DateTime.Now.AddDays(7);

MessageBox.Show(Dts.Variables["StartTime_Package"].Value.ToString());
Dts.TaskResult = (int)ScriptResults.Success;
}
Script Task code
如果我们运行该包,它将在消息框中显示该值。该包是在 2012 年 11 月 1 日执行的,您可以看到该包显示的是 2012 年 11 月 8 日的修改值。
Message box
希望能让您对 SSIS 中的变量范围有所了解。

关于ssis - 如何跨包内的脚本任务访问变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13180475/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com