我有一个“执行SQL任务”,其中包含行计数。参见屏幕1。
我正在尝试在SSIS“脚本任务”中打印“ ContactRowCount”。参见屏幕2。
但是Dts.Variables [“ User :: ContactRowCount”]为空。我可以找回它。任何人都知道如何从脚本任务中的“执行SQL任务”中检索变量值
屏幕-1
屏幕-2
请阅读文档,所有内容均已覆盖。
我有两个变量。一种是用于我的SQL,称为Quqery
,这是可选的。另一个是名为的Int32 RowCount
。
我有一个使用OLE DB连接管理器的执行SQL任务。我已将其指定为ResultSet
“单行”。我将Query
变量用作源。
值是
SELECT COUNT(1) AS ContactRowCount FROM sys.columns AS SC;
在“结果集”选项卡中,我将0
ResultSet映射到我的变量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;
}
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句