我使用带有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及更高版本
答案 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和用法的示例代码。