我有一个“执行SQL任务”的行数,其产品。 看到屏幕1。
我想打印在SSIS'ContactRowCount“脚本任务”。 见屏幕2。
但是Dts.Variables [ “用户:: ContactRowCount”]为空。 我可以找回。 任何人都知道如何检索变量值从脚本任务“执行SQL任务”
屏幕 - 1
屏幕 - 2
我有一个“执行SQL任务”的行数,其产品。 看到屏幕1。
我想打印在SSIS'ContactRowCount“脚本任务”。 见屏幕2。
但是Dts.Variables [ “用户:: ContactRowCount”]为空。 我可以找回。 任何人都知道如何检索变量值从脚本任务“执行SQL任务”
屏幕 - 1
屏幕 - 2
请阅读文档,所有这一切都已经被覆盖。
我有两个变量。 一个是我的SQL,叫Quqery
,这是可选的。 另一种是一个Int32称为RowCount
。
我有一个使用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;
}
}
}
在脚本任务,而不是结果集名称中使用变量名。