понедельник, 11 июня 2012 г.

MSSQL : Повторная отправка почтовых сообщений

Нашел в архиве :)

На работе переключили почтовый сервер, и конечно забыли исправить в MSSQL.

Поменяли, и за одно повторно отправили сообщения :)

DECLARE @mailitem_id [INT]
DECLARE @rc          INT,
        @sendmailxml VARCHAR(max)
DECLARE @checkDate [DATETIME]

SELECT @checkDate = '20120326'

SELECT @mailitem_id = Min([mailitem_id])
FROM   msdb.dbo.sysmail_mailitems
WHERE  [sent_status] = 2
       AND [send_request_date] > @checkDate

WHILE @mailitem_id IS NOT NULL
  BEGIN
      SET @sendmailxml =
'<requests:SendMail xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://schemas.microsoft.com/databasemail/requests RequestTypes.xsd" xmlns:requests="http://schemas.microsoft.com/databasemail/requests"><MailItemId>'
+ CONVERT(NVARCHAR(20), @mailitem_id)
+ N'</MailItemId></requests:SendMail>'

    -- Send the send request on queue.
    EXEC @rc = Sp_sendmailqueues
      @sendmailxml

    IF @rc <> 0
      BEGIN
          RAISERROR(14627,16,1,@rc,'send mail')
      --GOTO ErrorHandler;
      END

    SELECT @mailitem_id = Min([mailitem_id])
    FROM   msdb.dbo.sysmail_mailitems
    WHERE  [sent_status] = 2
           AND [send_request_date] > @checkDate
           AND [mailitem_id] > @mailitem_id
END 

Комментариев нет: