SSIS 内で新しいスクリプト コンポーネントを作成すると、事前実行メソッドと事後実行メソッドに base.PreExecute(); が含まれます。および base.PostExecute(); 行...
これらの行の機能と、それらを変更/削除することによる影響を知りたいです。ありがとう!
SSIS 内で新しいスクリプト コンポーネントを作成すると、事前実行メソッドと事後実行メソッドに base.PreExecute(); が含まれます。および base.PostExecute(); 行...
これらの行の機能と、それらを変更/削除することによる影響を知りたいです。ありがとう!
Integration Services の現在のリリースでは、これらはノーオペレーション メソッドです。それらを削除することによる現在の影響は存在しません。ただし、Microsoft はいつでもこれらのメソッドに操作を追加する可能性があります。これは、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 から取得されます。
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()
{
}
仮想でメモリをリフレッシュするには(C# リファレンス)
virtual キーワードは、メソッド、プロパティ、インデクサー、またはイベント宣言を変更し、派生クラスでオーバーライドできるようにするために使用されます。たとえば、このメソッドは、それを継承する任意のクラスによってオーバーライドできます。
2 つの基本メソッドが何を行っているかを正確に説明することはできませんが、この回答 では、すべての SSIS タスク コンポーネントのライフサイクルについて説明しています。
SSIS 内のすべてのタスク/コンテナーのライフサイクルは同じです。イベント ハンドラーが起動するのを見ると、その一部を確認できます。スクリプト コンポーネントでは、データ フロー タスク内で、さまざまな手順を実行します。その一部は検証です(この契約では、このテーブルから整数型の列が必要であると述べています-接続できるか、存在するか、正しい型かなど)。
検証後、タスクには実行するセットアップと破棄のステップがあります。スクリプトで SSIS 変数を操作しているように見えるため、その前後の実行時間の一部は、変数 (SSIS) から変数 (.net) への変換とその逆の変換に費やされます。
したがって、SSIS のデフォルトの前処理と後処理が行われないという特定の要件がない限り、それらを削除すべきではないと思います。