none
sysmail_allitemsテーブルについて RRS feed

  • 質問

  • DBメールを使用してメールを送信し、成功したかどうかを判断したく
    【sysmail_allitems】を見ておりました。
    そこで、DBメールを使用すると【sysmail_allitems】に表示されますが、
    テーブルを見ていると一部『mailitem_id』が欠けていました。

    すべてのメッセージが入ってくると考えておりましたが、
    欠けてしまう場合はとはどんな事象の時かご教示頂きたく、
    投稿させて頂きました。

    また、【sysmail_allitems】や【sysmail_sentitems】等のカタログビューを参照する際、
    システムテーブルを参照すると、テーブルにロックがかかり、
    最悪DBを落とす可能性があるから極力参照しないでほしいと言われましたが、

    sp_send_dbmailで取得したidを元に
    SELECT * FROM sysmail_sentitems where mailitem_id = ????

    と参照する予定ですが、どのようにすれば問題ないかも合わせてご教示頂けると
    非常に助かります。


    以上、何卒宜しくお願い申し上げます。

    2014年5月1日 4:21

回答

  • >すべてのメッセージが入ってくると考えておりましたが、
    >欠けてしまう場合はとはどんな事象の時かご教示頂きたく、
    >投稿させて頂きました。
    ライブラリにある通りかと。
    http://technet.microsoft.com/ja-jp/library/ms175056.aspx
    全てのメッセージが入りますが、sysadmin のメンバーで無い場合は自身が送信したメッセージだけ表示されるため、「欠けている」ように見えているだけのように見受けられます。

    >また、【sysmail_allitems】や【sysmail_sentitems】等のカタログビューを参照する際、
    >システムテーブルを参照すると、テーブルにロックがかかり、
    >最悪DBを落とす可能性があるから極力参照しないでほしいと言われましたが、
    カタログビューを参照する際のロックが原因で DB が落ちるというのは初耳ですが、とにかくロックを掛けたくないのであれば NOLOCK テーブルヒントで済む話かと思われます。
    http://technet.microsoft.com/ja-jp/library/ms187373.aspx


    MCITP(Database Developer/Database Administrator)

    • 回答としてマーク kong0214 2014年5月1日 5:55
    2014年5月1日 5:33