次の方法で共有


PreExecute メソッド

スクリプト コンポーネントが入力および出力を処理する前に実行する必要があるカスタム コードを実行します。

名前空間:  Microsoft.SqlServer.Dts.Pipeline
アセンブリ:  Microsoft.SqlServer.TxScript (Microsoft.SqlServer.TxScript.dll)

構文

'宣言
Public Overridable Sub PreExecute
'使用
Dim instance As ScriptComponent

instance.PreExecute()
public virtual void PreExecute()
public:
virtual void PreExecute()
abstract PreExecute : unit -> unit 
override PreExecute : unit -> unit 
public function PreExecute()

説明

スクリプト コンポーネント開発者は、直接的には ScriptComponent クラスを使用しませんが、UserComponent クラスを介して ScriptComponent から継承する ScriptMain クラスのメソッドおよびプロパティをコーディングすることにより、間接的に使用します。

開発者は PreExecute メソッドをオーバーライドし、データの行を処理する前に必要な 1 回限りのタスクを実行します。

使用例

次のコード サンプルは、スクリプト コンポーネント開発者が、PreExecute メソッド、および PostExecute メソッドを使用して、処理の前後にテキスト ファイルの接続を開いたり閉じたりする方法を示します。このサンプルの詳細については、「スクリプト コンポーネントによる変換先の作成」を参照してください。

Imports System.IO
...
Public Class ScriptMain
    Inherits UserComponent

    Dim copiedAddressFile As String
    Private textWriter As StreamWriter
    Private columnDelimiter As String = ","

    Public Overrides Sub AcquireConnections(ByVal Transaction As Object)

        Dim connMgr As IDTSConnectionManager100 = _
            Me.Connections.MyFlatFileDestConnectionManager
        copiedAddressFile = CType(connMgr.AcquireConnection(Nothing), String)

    End Sub

    Public Overrides Sub PreExecute()

        textWriter = New StreamWriter(copiedAddressFile, False)

    End Sub

    Public Overrides Sub MyAddressInput_ProcessInputRow(ByVal Row As MyAddressInputBuffer)

        With textWriter
            If Not Row.AddressID_IsNull Then
                .Write(Row.AddressID)
            End If
            .Write(columnDelimiter)
            If Not Row.City_IsNull Then
                .Write(Row.City)
            End If
            .WriteLine()
        End With

    End Sub

    Public Overrides Sub PostExecute()

        textWriter.Close()

    End Sub

End Class