スクリプト タスクによるリモート プライベート メッセージ キューへの送信

メッセージ キュー (MSMQ) では、開発者がメッセージを送受信することにより、アプリケーション プログラムとすばやく確実に通信できます。メッセージ キューは、ローカル コンピュータまたはリモート コンピュータに存在し、パブリックであることも、プライベートであることもあります。Integration Services の MSMQ 接続マネージャとメッセージ キュー タスクでは、リモート コンピュータ上のプライベート キューへの送信はサポートされません。ただし、スクリプト タスクを使用することにより、リモート プライベート キューにメッセージを簡単に送信できます。

注意注意

複数のパッケージでより簡単に再利用できるタスクを作成する場合は、このスクリプト タスク サンプルのコードを基にした、カスタム タスクの作成を検討してください。詳細については、「カスタム タスクの開発」を参照してください。

説明

次の例では、既存の MSMQ 接続マネージャを System.Messaging 名前空間のオブジェクトおよびメソッドと共に使用して、パッケージ変数に含まれているテキストをリモート プライベート メッセージ キューに送信します。MSMQ 接続マネージャの M:Microsoft.SqlServer.Dts.ManagedConnections.MSMQConn.AcquireConnection(System.Object) メソッドを呼び出すと、このタスクを実行する Send メソッドを持つ MessageQueue オブジェクトが返されます。

このスクリプト タスクの例を構成するには

  1. 既定の名前を使用して MSMQ 接続マネージャを作成します。有効なリモート プライベート キューのパスを次の形式で設定します。

    FORMATNAME:DIRECT=OS:<computername>\private$\<queuename>
    
  2. メッセージ テキストをスクリプトに渡すために、String 型の MessageText という名前の Integration Services 変数を作成します。この変数の値として既定のメッセージを入力します。

  3. スクリプト タスクをデザイン画面に追加して編集します。[スクリプト タスク エディタ][スクリプト] タブで、ReadOnlyVariables プロパティに MessageText 変数を追加し、この変数をスクリプト内で使用できるようにします。

  4. [スクリプトの編集] をクリックして、MicrosoftVisual Studio Tools for Applications (VSTA) スクリプト エディタを開きます。

  5. スクリプト プロジェクトに System.Messaging 名前空間への参照を追加します。

  6. スクリプト ウィンドウの内容を、次のコードで置き換えます。

コード

Imports System
Imports Microsoft.SqlServer.Dts.Runtime
Imports System.Messaging

Public Class ScriptMain

    Public Sub Main()

        Dim remotePrivateQueue As MessageQueue
        Dim messageText As String

        remotePrivateQueue = _
            DirectCast(Dts.Connections("Message Queue Connection Manager").AcquireConnection(Dts.Transaction), _
            MessageQueue)
        messageText = DirectCast(Dts.Variables("MessageText").Value, String)
        remotePrivateQueue.Send(messageText)

        Dts.TaskResult = ScriptResults.Success

    End Sub

End Class
using System;
using Microsoft.SqlServer.Dts.Runtime;
using System.Messaging;

public class ScriptMain
{

    public void Main()
        {

            MessageQueue remotePrivateQueue = new MessageQueue();
            string messageText;

            
            remotePrivateQueue = (MessageQueue)(Dts.Connections["Message Queue Connection Manager"].AcquireConnection(Dts.Transaction) as MessageQueue);
            messageText = (string)(Dts.Variables["MessageText"].Value);
            remotePrivateQueue.Send(messageText);

            Dts.TaskResult = (int)ScriptResults.Success;

        }

}
Integration Services のアイコン (小) 最新の Integration Services の入手

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

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