zoukankan      html  css  js  c++  java
  • SSIS Script Component 方法的执行顺序

    SSIS Script Component 的脚本可基本要以让我们做任何事,如同Asp.net的CodeBehind,基类的虚方法有相应的执行顺序

    在DataFlow中添加一个Script Componet控件

    image

    点Edit Scipt进入代码编辑

    添加如下代码

    /* Microsoft SQL Server Integration Services Script Component
    *  Write scripts using Microsoft Visual C# 2008.
    *  ScriptMain is the entry point class of the script.*/
    
    using System;
    using System.Data;
    using Microsoft.SqlServer.Dts.Pipeline.Wrapper;
    using Microsoft.SqlServer.Dts.Runtime.Wrapper;
    using System.IO;
    
    [Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]
    public class ScriptMain : UserComponent
    {
        string filePath = @"d:\\temp\test.txt";
        private void WriteFile(string s)
        {
            if (!File.Exists(filePath))
            {
                File.Create(filePath);
            }
            using (StreamWriter sw = new StreamWriter(filePath, true))
            {
                sw.WriteLine(s +": "+ DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss fff"));
            }
        }
    
        public override void PreExecute()
        {
            base.PreExecute();
            WriteFile("PreExecute");
            /*
              Add your code here for preprocessing or remove if not needed
            */
        }
    
        public override void PostExecute()
        {
            base.PostExecute();
            WriteFile("PostExecute");
            /*
              Add your code here for postprocessing or remove if not needed
              You can set read/write variables here, for example:
              Variables.MyIntVar = 100
            */
        }
    
        public override void CreateNewOutputRows()
        {
            WriteFile("CreateNewOutputRows");
    
            /*
              Add rows by calling the AddRow method on the member variable named "<Output Name>Buffer".
              For example, call MyOutputBuffer.AddRow() if your output was named "MyOutput".
            */
        }
    
        public override void AcquireConnections(object Transaction)
        {
            //base.AcquireConnections(Transaction);
            WriteFile("AcquireConnections");
    
        }
    
        public override void FinishOutputs()
        {
            base.FinishOutputs();
            WriteFile("FinishOutputs");
        }
    
        public override void PrimeOutput(int Outputs, int[] OutputIDs, Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer[] Buffers)
        {
            base.PrimeOutput(Outputs, OutputIDs, Buffers);
            WriteFile("PrimeOutput");
        }
    
        public override void ProcessInput(int InputID, Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer Buffer)
        {
            base.ProcessInput(InputID, Buffer);
            WriteFile("ProcessInput");
        }
    
        public override void ReleaseConnections()
        {
            base.ReleaseConnections();
            WriteFile("ReleaseConnections");
        }
    
    }

    将基类方法的执行顺序记录到test.txt文件中,运行后,得到如下结果

    image

    第1行到第6行可以看到是AcquireConnections和ReleaseConnections执行了三次,基类的方法有的没有override,但常用的方法从第7行后可以看到,PreExecute执行前调用一次AcquireConnections方法,PostExecute方法执行后再调用一次ReleaseConnections方法。

    ScriptComponent类请参见MSDN: http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.dts.pipeline.scriptcomponent.aspx

  • 相关阅读:
    FZU 2150 Fire Game
    POJ 3414 Pots
    POJ 3087 Shuffle'm Up
    POJ 3126 Prime Path
    POJ 1426 Find The Multiple
    POJ 3278 Catch That Cow
    字符数组
    HDU 1238 Substing
    欧几里德和扩展欧几里德详解 以及例题CodeForces 7C
    Codeforces 591B Rebranding
  • 原文地址:https://www.cnblogs.com/xuf22/p/2104767.html
Copyright © 2011-2022 走看看