SQL Server SSIS脚本组件 - 用于捕获错误行

时间:2017-11-22 10:08:53

标签: ssis etl

我正在尝试创建一些通用的东西,可以在多个ETL SSIS包中重复使用,如果CSV数据行无法写入目标SQL数据库表,我们会捕获它并报告一行,失败了。

数据流看起来像这样:

enter image description here

我设法通过修改Transformation Script Component中的 BufferWrapper.cs 来实现这一目标,我创建了一个新的只读属性:

public class Input0Buffer: ScriptBuffer

{
    public Input0Buffer(PipelineBuffer Buffer, int[] BufferColumnIndexes, OutputNameMap OutputMap)
        : base(Buffer, BufferColumnIndexes, OutputMap)
    {
    }

    public string RowCsv
    {
        get
        {
            var csv = new StringBuilder();
            for (int i = 0; i < Buffer.ColumnCount; i++)
            {
                csv.Append(this[i]).Append(",");
            }
            return csv.ToString();
        }
    }
...

然后我使用此属性填充输出列。这一切都很棒,但是,每次编辑脚本时都会自动生成 BufferWrapper.cs 文件,因此上面的代码会被删除。因此,我正在寻求替代解决方案。

0 个答案:

没有答案