1

我正在使用带有 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 及更高版本

4

1 回答 1

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 年版本,以确认我没有在此处转置值,而是将行计数组件放到数据流上,右键单击并查看属性。组件/类 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

我有一个关于我随着时间的推移使用的各种方法以及我喜欢/不喜欢它们的地方的演示文稿。多输入,少点击:构建 SSIS 的程序化方法。它包含用于创建 EzRowCountTransform 和用法的示例代码。

于 2014-07-03T20:40:56.533 回答