获取使用EzAPI SSIS传输的数据的行数

时间:2014-07-03 20:31:56

标签: ssis ezapi

我使用带有EzAPI的SSIS将一些数据从一个表传输到另一个表。如何获取已传输的行数?

我的设置如下

        EzPackage package = new EzPackage();

        EzOleDbConnectionManager srcConn;
        EzOleDbSource src;

        EzOleDbConnectionManager destConn;
        EzOleDbDestination dest;

        EzDataFlow dataFlow;

        destConn = new EzOleDbConnectionManager(package); //set connection string
        srcConn = new EzOleDbConnectionManager(package);

        dataFlow = new EzDataFlow(package);

        src = Activator.CreateInstance(typeof(EzOleDbSource), new object[] { dataFlow }) as EzOleDbSource;
        src.Connection = srcConn;
        src.SqlCommand = odbcImport.Query;

        dest = Activator.CreateInstance(typeof(EzOleDbDestination), new object[] { dataFlow }) as EzOleDbDestination;
        dest.Connection = destConn;
        dest.AttachTo(src, 0, 0);
        dest.AccessMode = AccessMode.AM_OPENROWSET_FASTLOAD;

        DTSExecResult result = package.Execute();

在哪里可以添加一些内容来获取行数?适用于所有版本的SQL Server 2008r2及更高版本

1 个答案:

答案 0 :(得分:1)

快速回答是行计数转换不是开箱即用的。我有一篇简短的帖子:Row Count with EzAPI

我从CodePlex下载了源项目,然后编辑了EzComponents.cs(在EzAPI \ src中)并添加了以下代码

[CompID("{150E6007-7C6A-4CC3-8FF3-FC73783A972E}")]
public class EzRowCountTransform : EzComponent
{
    public EzRowCountTransform(EzDataFlow dataFlow) : base(dataFlow) { }
    public EzRowCountTransform(EzDataFlow parent, IDTSComponentMetaData100 meta) : base(parent, meta) { }

    public string VariableName
    {
        get { return (string)Meta.CustomPropertyCollection["VariableName"].Value; }
        set { Comp.SetComponentProperty("VariableName", value); }
    }
}

上面的组件ID仅适用于2008年。

对于2012年,它将是E26997D8C-70DA-42B2-8208-A19CE3A9FE41我目前没有2012安装来确认我没有在那里转置值但是将Row Count组件拖放到数据流上,右键单击并看看房产。组件/类id是该值需要的值。如果你正在处理2005年,也会有类似的故事。

因此,一旦您能够使用EzRowCountTransform,您就可以将其修补到现有脚本中。

// Create an instance of our transform
EzRowCountTransform newRC = null;

// Create a variable to use it
Variable newRCVariable = null;
newRCVariable = package.Variables.Add("RowCountNew", false, "User", 0); 

// ...
src.SqlCommand = odbcImport.Query;

// New code here too
newRC = new EzRowCountTransform(dataFlow);
newRC.AttachTo(src);
newRC.Name = "RC New Rows";
newRC.VariableName = newRCVariable.QualifiedName;

// Continue old code

我介绍了我随着时间的推移使用的各种方法,以及我喜欢/不喜欢它们的方法。 Type more, click less: a programmatic approach to building SSIS。它包含用于创建EzRowCountTransform和用法的示例代码。