Когда я создаю новый компонент скрипта в SSIS, методы pre-execute и post-execute содержат base.PreExecute(); и base.PostExecute(); линии...
Я хочу знать, что делают эти строки, и последствия их изменения/удаления. Спасибо!
Когда я создаю новый компонент скрипта в SSIS, методы pre-execute и post-execute содержат base.PreExecute(); и base.PostExecute(); линии...
Я хочу знать, что делают эти строки, и последствия их изменения/удаления. Спасибо!
В текущем выпуске служб Integration Services это методы без операций. Текущие последствия для их удаления будут отсутствовать. Однако корпорация Майкрософт может в любой момент добавить в эти методы операцию, имеющую решающее значение для нормального функционирования служб Integration Services (крайне маловероятно, что это будет сделано с помощью исправления, в меньшей степени — с помощью выпуска новой версии). Они не сделали этого для 2008, 2012 или 2014, но v.Next неизвестен.
Если у вас нет веской причины не тратить мгновенное мерцание на базовый метод, я бы просто оставил его там.
Компонент скрипта создает класс ScriptMain
, который является производным от UserComponent
, который является производным от ScriptComponent
.
UserComponent
автоматически генерируется Visual Studio всякий раз, когда вы создаете или изменяете входные и выходные данные для компонента сценария.
/* 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.
Нажатие F12 в компоненте Pre/PostExecute приводит меня к
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()
{
}
Чтобы освежить в памяти виртуальный (справочник по C#)
Ключевое слово virtual используется для изменения объявления метода, свойства, индексатора или события и позволяет переопределить его в производном классе. Например, этот метод может быть переопределен любым классом, который его наследует:
Я не могу точно сказать вам, что делают два базовых метода, но этот ответ рассказывает о жизненном цикле всех служб SSIS. компоненты задачи:
Все задачи/контейнеры в SSIS имеют одинаковый жизненный цикл. Вы можете увидеть некоторые из них, наблюдая за срабатыванием обработчиков событий. В компоненте скрипта внутри задачи потока данных будут выполняться различные шаги. Частью этого является проверка (в этом контракте говорится, что у меня должен быть столбец из этой таблицы, который имеет целочисленный тип — могу ли я подключиться, существует ли он, правильный ли это тип и т. д.).
После проверки задачи будут иметь этапы настройки и демонтажа, которые необходимо выполнить. Поскольку вы, похоже, работаете с переменными SSIS в своем сценарии, часть этого времени до и после выполнения тратится на преобразование переменной (SSIS) в переменную (.net) и обратно.
Итак, я думаю, что вам не следует удалять их, если у вас нет особого требования, чтобы предварительная и постобработка SSIS по умолчанию не выполнялась.