当我在SSIS中创建一个新的脚本组件时,preexecute和post execute方法包含base.PreExecute();和base.PostExecute();线...
我想知道这些线路做了什么,以及修改/删除它们的分支。谢谢!
答案 0 :(得分:1)
对于Integration Services的当前版本,这些是无操作方法。目前取消它们的后果将不复存在。但是,Microsoft可能随时在这些方法中添加一项操作,这对于Integration Services的健康至关重要(通过补丁极不可能,通过发布新版本不太可能)。他们没有在2008年,2012年或2014年这样做,但v.Next是未知的。
除非你有充分的理由不花费瞬间闪烁击中基本方法,否则我就把它放在那里。
脚本组件,创建一个ScriptMain
类,该类派生自UserComponent
,派生自ScriptComponent
。
UserComponent
。
/* THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT!
* Microsoft SQL Server Integration Services component wrapper
* This module defines the base class for your component
* THIS IS AUTO-GENERATED CODE THAT WILL BE OVERWRITTEN! DO NOT EDIT! */
ScriptMain
是您的游乐场,您可以选择调用base.pre / postexecute方法。
根据您的版本,ScriptComponent来自Microsoft.SqlServer.TxScript.dll
在Pre / PostExecute组件上按F12会转到
public class ScriptComponent
{
public virtual void PostExecute();
public virtual void PreExecute();
}
我启动了ILSpy,根据它,这些方法是空的
// Microsoft.SqlServer.Dts.Pipeline.ScriptComponent
public virtual void PostExecute()
{
}
// Microsoft.SqlServer.Dts.Pipeline.ScriptComponent
public virtual void PreExecute()
{
}
上刷新记忆
virtual关键字用于修改方法,属性,索引器或事件声明,并允许在派生类中重写它。例如,任何继承它的类都可以覆盖此方法:
答案 1 :(得分:0)
我无法确切地告诉你两个基本方法正在做什么,但是这个answer讨论了所有SSIS任务组件的生命周期:
SSIS中的所有任务/容器具有相同的生命周期。您可以通过观看事件处理程序来查看其中一些内容。在脚本组件中,在数据流任务内部,将进行各种步骤。部分是验证(这个合同说我应该从这个表中有一个整数类型的列 - 我可以连接,它是否存在,它是正确的类型等)。
验证后,任务将具有设置和拆除步骤以执行。由于您似乎在脚本中使用SSIS变量,因此花费了前/后执行时间的一部分,允许将变量(SSIS)转换为变量(.net)并再次返回。
所以,我认为你不应该删除它们,除非你有特定要求SSIS的默认预处理和后处理没有发生。