Tun*_*Tun 1 ssis sql-server-2008 ssis-2012
我有一个'执行SQL任务',它产生一个行数.见屏幕1.
我试图在ssis'脚本任务'中打印'ContactRowCount'.见屏幕2.
但是Dts.Variables ["User :: ContactRowCount"]为空.我可以找回它.任何人都知道如何从脚本任务中的"执行SQL任务"中检索变量值
屏幕 - 1

屏幕 - 2

bil*_*nkc 10
阅读文档,所有这些已被涵盖.
我有两个变量.一个是我的SQL,叫做Quqery,是可选的.另一个叫做Int32 RowCount.

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

价值是
SELECT COUNT(1) AS ContactRowCount FROM sys.columns AS SC;
Run Code Online (Sandbox Code Playgroud)
在"结果集"选项卡中,我将0ResultSet 映射到我的变量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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
38002 次 |
| 最近记录: |