次の方法で共有


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

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

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

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

イベント

説明

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 のアイコン (小) 最新の Integration Services の入手

マイクロソフトが提供する最新のダウンロード、アーティクル、サンプル、ビデオ、およびコミュニティで選択されたソリューションについては、MSDN または TechNet の Integration Services のページを参照してください。

これらの更新が自動で通知されるようにするには、ページの RSS フィードを定期受信します。