如何在ssis脚本任务中显示变量

时间:2015-02-13 11:59:57

标签: sql-server-2008 ssis ssis-2012

我有一个'执行SQL任务',它产生一个行数。见屏幕1。

我正在尝试在ssis“脚本任务”中打印“ContactRowCount”。见屏幕2。

但是Dts.Variables [“User :: ContactRowCount”]为空。我可以找回它。 任何人都知道如何从脚本任务中的“执行SQL任务”中检索变量值

屏幕 - 1

enter image description here

屏幕 - 2

enter image description here

2 个答案:

答案 0 :(得分:8)

阅读文档,所有这些都已被涵盖。

变量

我有两个变量。一个是我的SQL,名为Quqery,它是可选的。另一个是名为RowCount的Int32。

enter image description here

执行SQL任务

我有一个使用OLE DB连接管理器的执行SQL任务。我已将其指定为单行的ResultSet。我使用Query变量作为源。

enter image description here

值为

SELECT COUNT(1) AS ContactRowCount FROM sys.columns AS SC;

在“结果集”选项卡中,我将0 ResultSet映射到我的变量User::RowCount

如果您使用的是其他连接管理器提供程序(ADO.NET或ODBC),则这些语义都会发生变化。但它有记录。

enter image description here

脚本任务

我确保我将变量作为只读对象传递

enter image description here

在我的脚本中,我需要访问该变量。这是区分大小写的。此外,我想要.Value属性。你的代码,如果它工作,将把SSIS变量转换为字符串。这导致发出名称Microsoft.SqlServer.Dts.Runtime.Variable

的对象的默认值

相反,我们希望访问作为对象返回的.Value属性。如果你试图用这个值做一些数学的东西,那么你需要把它转换成一个整数值但是因为我们要串起来,这很容易。

using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;
using System.Windows.Forms;

namespace ST_454527867e9d448aad6a7f03563175b2.csproj
{
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]
    public partial class ScriptMain : Microsoft.SqlServer.Dts.Tasks.ScriptTask.VSTARTScriptObjectModelBase
    {

        #region VSTA generated code
        enum ScriptResults
        {
            Success = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Success,
            Failure = Microsoft.SqlServer.Dts.Runtime.DTSExecResult.Failure
        };
        #endregion

        public void Main()
        {
            string strMessage = Dts.Variables["User::RowCount"].Value.ToString();
            MessageBox.Show(strMessage);
            Dts.TaskResult = (int)ScriptResults.Success;
        }
    }
}

答案 1 :(得分:1)

在脚本任务中使用变量名,而不是结果集名。