如何在ssis脚本任务中显示变量
How to display variable in ssis script task
我有一个 'Execute SQL task' 产品行计数。参见屏幕 1。
我正在尝试在 ssis 'Script task' 中打印 'ContactRowCount'。参见屏幕 2。
但是 Dts.Variables["User::ContactRowCount"] 为空。我可以找回它。
任何人都知道如何从脚本任务
中的 'Execute SQL task' 检索变量值
屏幕 - 1
屏幕 - 2
一定要阅读文档,所有这些都已涵盖。
变量
我有两个变量。一个是给我的 SQL,叫做 Quqery
,这是可选的。另一个是名为 RowCount
.
的 Int32
执行SQL任务
我有一个使用 OLE DB 连接管理器的执行 SQL 任务。我已将其指定为单行的 ResultSet
。我使用 Query
变量作为源。
值为
SELECT COUNT(1) AS ContactRowCount FROM sys.columns AS SC;
在结果集选项卡中,我将 0
结果集映射到我的变量 User::RowCount
。
如果您使用不同的连接管理器提供程序(ADO.NET 或 ODBC),那么这些语义都会改变。但它被记录在案。
脚本任务
我确保将我的变量作为只读对象传递
在我的脚本中,我需要访问该变量。这是区分大小写的。此外,我想要 .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;
}
}
}
在脚本任务中使用变量名称而不是结果集名称。
我有一个 'Execute SQL task' 产品行计数。参见屏幕 1。
我正在尝试在 ssis 'Script task' 中打印 'ContactRowCount'。参见屏幕 2。
但是 Dts.Variables["User::ContactRowCount"] 为空。我可以找回它。 任何人都知道如何从脚本任务
中的 'Execute SQL task' 检索变量值屏幕 - 1
屏幕 - 2
一定要阅读文档,所有这些都已涵盖。
变量
我有两个变量。一个是给我的 SQL,叫做 Quqery
,这是可选的。另一个是名为 RowCount
.
执行SQL任务
我有一个使用 OLE DB 连接管理器的执行 SQL 任务。我已将其指定为单行的 ResultSet
。我使用 Query
变量作为源。
值为
SELECT COUNT(1) AS ContactRowCount FROM sys.columns AS SC;
在结果集选项卡中,我将 0
结果集映射到我的变量 User::RowCount
。
如果您使用不同的连接管理器提供程序(ADO.NET 或 ODBC),那么这些语义都会改变。但它被记录在案。
脚本任务
我确保将我的变量作为只读对象传递
在我的脚本中,我需要访问该变量。这是区分大小写的。此外,我想要 .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;
}
}
}
在脚本任务中使用变量名称而不是结果集名称。