[FIX] DTS: メール送信 タスクがメールボックスをいっぱいにする

この記事は、以前は次の ID で公開されていました: JP261133
この資料は、アーカイブされました。これは "現状のまま" で提供され、更新されることはありません。
現象
SQL Server のデータ変換サービス (DTS) のメール送信タスクを使ってメッセージを送信するパッケージを作成すると、送信側のメールボックスがいっぱいになり、DTS は次のようなエラー メッセージを表示することがあります。
Cannot execute package because mailbox is full.
しかし、送信側の Microsoft Outlook の送信済みアイテム フォルダを調べてメールボックスのサイズを確認すると、そのサイズはほぼ 0 KB で、Outlook 側からは送信側のメールボックスには何も表示されません。

Exchange Server の管理コンソールから送信側のメールボックスのサイズをチェックした場合は、正しいメールボックスのサイズが表示されますが、上記のメッセージは Outlook や Exchange Server では表示されないため、メールボックスがメッセージでいっぱいになっている状態は確認できません。
原因
Outlook と Exchange のクライアントからは、Exchange Server のインフォメーション ストアのルート ディレクトリにあるアイテムを参照することができません。DTS のメール送信でメッセージを送信すると、DTS はそのメッセージを Exchange Server 上で送信側 (送信元) のルート フォルダに保持します。したがって、送信側の Outlook クライアントからは、これらのメッセージを参照または削除することができません。
回避策
Microsoft Exchange ユーティリティの MDB Viewer を使用することにより、メールボックスが一杯になっている原因の電子メール メッセージを表示したり削除することが可能です。

DTS のメール送信で使用するように設定されているメールボックスのルート フォルダをチェックするには、以下の手順を実行します。
  1. 以下のファイルを Outlook がインストールされているコンピュータにコピーします。

    • Mdbvu32.exe
    • Propvu32.dll
    • Statvu32.dll
    • Tbvlu32.dll
    • Xvport.dll

    Mdbvu32 ユーティリティおよび付随する DLL ファイルは、Exchange Server 5.5 CD-ROM の \Server\Support\Utils\I386 フォルダか \Server\Support\Utils\Alpha フォルダにあります。
  2. ユーザーのメールボックスに対するプロファイルが存在すること、そのプロファイルがデフォルトのプロファイルとして選択されていること、および (ユーザーのメールボックスに対する権限を持っている) ユーザーがクライアント ワークステーションに正常にログオンしていることを確認します。
  3. Outlook が現在、ワークステーション上で実行中ではないことを確認します。
  4. MDBVU32.exe 実行可能ファイルをダブルクリックして、MDB Viewer を起動します。
  5. [MAPILogonEx] ダイアログ ボックスが開いたら、[MAPI_EXPLICIT_PROFILE] チェック ボックスをオンにして、[OK] をクリックします。
  6. [プロファイルの選択] ダイアログ ボックスが表示されたら、前の手順で作成したプロファイルを選択して、[OK] をクリックします。

    : [プロファイルの選択] ダイアログ ボックスが表示されない場合は、既にプロファイルにログオンしています。クライアントおよびプロファイルを終了、ログオフして、もう一度試してください。
  7. MDB Viewer Test Application のメニューの [MDB] をクリックして、[OpenMessageStore] オプションを選択します。
  8. [Select Message Store To Open] ダイアログ ボックスで、表示名 [Attendant (Server)] を選択して、[Open] をクリックします ([Open Mode] はデフォルトで [Best Access] になっています。この設定はデフォルトのままにすることをお勧めします)。
  9. MDB Viewer Test Application のメニューの [MDB] をクリックして、[Open Root Folder] をクリックします。

    この手順で、DTS によって送信されたメッセージ "DTStest1" が、DTS によって使用されるプロファイルのルート ディレクトリにあることがわかります。ルート ディレクトリは、クライアント側には隠されていますので、Outlook を使用します。このメッセージは、参照することはできませんが、受信者に送信された後もメールボックスに保管されています。これがメールボックスがいっぱいになる理由です。しかし、Outlook ではこのメールボックスで発生している状況をつかむことができません。
  10. [MAPI_FOLDER ROOT] ウィンドウの中で、2 番目のボックス [Operation Available] を選択します。 演算を選択して、[Call Function] をクリックします。[lpFld->DeleteMEssages()] という名前の関数を選択し、[Call Function] をクリックして、ルート ディレクトリで選択されたメッセージを削除します。
状況

弊社では、これを Microsoft SQL Server version 7.0 の問題として確認しています。
この問題は、Microsoft SQL Server version 7.0 Service Pack 3 で修正されています。
最新の SQL Server サービスパックのダウンロードおよびインストールについて詳しくは以下をご覧下さい。

http://www.microsoft.com/japan/sql/download/default.asp (日本語版)
http://www.microsoft.com/sql/downloads/default.htm(英語版)
詳細
DTS の GUI デザイナでメール送信タスクを使用した場合、デフォルトでは、メールは送信済みアイテム フォルダに保存されません。現在のバージョンでは、DTS の GUI には、この動作を変更するオプションがありません。ただし、次の Microsoft Visual Basic コードを使用すれば、この動作を変更することができます。
Dim myPackage As New DTS.PackageDim oCustomTask3 as DTS.SendMailTaskSet oTask = myPackage.Tasks.New("DTSSendMailTask")Set oCustomTask3 = oTask.CustomTaskoCustomTask1.SaveMailInSentItemsFolder = False
関連情報
この資料は米国 Microsoft Corporation から提供されている Knowledge Base の Article ID 261133 (最終更新日 2001-07-27) をもとに作成したものです。

"DTS mail" "fill up mailbox"
プロパティ

文書番号:261133 - 最終更新日: 02/23/2014 19:35:47 - リビジョン: 4.1

Microsoft SQL Server 1.1 Standard Edition, Microsoft SQL Server 2000 Standard Edition, Microsoft Exchange Active Server Components 5.0

  • kbnosurvey kbarchive kbbug kbfix kbsqlprog kbsqlserv700 KB261133
フィードバック