次の方法で共有


スクリプト タスクでのイベントの発生

適用対象: SQL Server Azure Data Factory の SSIS 統合ランタイム

イベントは、エラーや警告、タスクの進行状況や状態などのその他の情報を、親パッケージにレポートする方法を提供するものです。 パッケージには、イベントの通知機能を管理するためのイベント ハンドラーがあります。 スクリプト タスクは、Dts オブジェクトの Events プロパティに対してメソッドを呼び出して、イベントを発生させることができます。 Integration Services パッケージのイベントの処理の詳細については、「Integration Services (SSIS) のイベント ハンドラー」を参照してください。

イベントは、パッケージ内で有効な任意のログ プロバイダーに記録できます。 ログ プロバイダーは、イベントに関する情報をデータ ストアに保存します。 スクリプト タスクは、イベントを発生させずに Log メソッドを使用して、情報をログ プロバイダーに記録することもできます。 Log メソッドの使用方法の詳細については、「スクリプト タスクでのログ記録」を参照してください。

イベントを発生させるには、スクリプト タスクは Events プロパティによって公開されるメソッドのいずれかを呼び出します。 次の表に、Events プロパティにより公開されているメソッドの一覧を示します。

Event 説明
FireCustomEvent パッケージ内でユーザー定義のカスタム イベントを発生させます。
FireError パッケージにエラー条件を通知します。
FireInformation ユーザーに情報を提供します。
FireProgress タスクの進行状況をパッケージに通知します。
FireQueryCancel パッケージがタスクを途中でシャットダウンする必要があるかどうかを示す値を返します。
FireWarning エラー条件ではないが、タスクがユーザーに通知する正当な理由がある状態であることをパッケージに通知します。

イベントの例

次の例では、スクリプト タスク内でイベントを発生させる方法を示します。 この例では、ネイティブ Windows API 関数を使用して、インターネット接続が使用できるかどうかを確認します。 接続が使用できない場合、エラーを発生させます。 使用されているモデム接続が切断される可能性がある場合、この例では警告が発生します。 それ以外の場合は、インターネット接続が検出されたことを示す情報メッセージを返します。

Private Declare Function InternetGetConnectedState Lib "wininet" _  
    (ByRef dwFlags As Long, ByVal dwReserved As Long) As Long  
  
Private Enum ConnectedStates  
    LAN = &H2  
    Modem = &H1  
    Proxy = &H4  
    Offline = &H20  
    Configured = &H40  
    RasInstalled = &H10  
End Enum  
  
Public Sub Main()  
  
    Dim dwFlags As Long  
    Dim connectedState As Long  
    Dim fireAgain as Boolean  
  
    connectedState = InternetGetConnectedState(dwFlags, 0)  
  
    If connectedState <> 0 Then  
        If (dwFlags And ConnectedStates.Modem) = ConnectedStates.Modem Then  
            Dts.Events.FireWarning(0, "Script Task Example", _  
                "Volatile Internet connection detected.", String.Empty, 0)  
        Else  
            Dts.Events.FireInformation(0, "Script Task Example", _  
                "Internet connection detected.", String.Empty, 0, fireAgain)  
        End If  
    Else  
        ' If not connected to the Internet, raise an error.  
        Dts.Events.FireError(0, "Script Task Example", _  
            "Internet connection not available.", String.Empty, 0)  
    End If  
  
    Dts.TaskResult = ScriptResults.Success  
  
End Sub  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Runtime;  
using System.Windows.Forms;  
using System.Runtime.InteropServices;  
  
public class ScriptMain  
{  
  
[DllImport("wininet")]  
        private extern static long InternetGetConnectedState(ref long dwFlags, long dwReserved);  
  
        private enum ConnectedStates  
        {  
            LAN = 0x2,  
            Modem = 0x1,  
            Proxy = 0x4,  
            Offline = 0x20,  
            Configured = 0x40,  
            RasInstalled = 0x10  
        };  
  
        public void Main()  
        {  
            //  
            long dwFlags = 0;  
            long connectedState;  
            bool fireAgain = true;  
            int state;  
  
            connectedState = InternetGetConnectedState(ref dwFlags, 0);  
            state = (int)ConnectedStates.Modem;  
            if (connectedState != 0)  
            {  
                if ((dwFlags & state) == state)  
                {  
                    Dts.Events.FireWarning(0, "Script Task Example", "Volatile Internet connection detected.", String.Empty, 0);  
                }  
                else  
                {  
                    Dts.Events.FireInformation(0, "Script Task Example", "Internet connection detected.", String.Empty, 0, ref fireAgain);  
                }  
            }  
            else  
            {  
                // If not connected to the Internet, raise an error.  
                Dts.Events.FireError(0, "Script Task Example", "Internet connection not available.", String.Empty, 0);  
            }  
  
            Dts.TaskResult = (int)ScriptResults.Success;  
  
        }  
  

参照

Integration Services (SSIS) のイベント ハンドラー
パッケージにイベント ハンドラーを追加する