cs_EmailQueue_Failure///cs_Emails_Dequeue///cs_Emails_Enqueue

來源:互聯網
上載者:User
cs_EmailQueue_Failure
ALTER  proc dbo.cs_EmailQueue_Failure
    @EmailID uniqueidentifier,
    @FailureInterval int,
    @MaxNumberOfTries int
as
SET Transaction Isolation Level Read UNCOMMITTED
/**//*設定交易隔離等級,Read UNCOMMITTED  執行髒讀或 0 級隔離鎖定,這表示不發出共用鎖定,
  也不接受排它鎖。當設定該選項時,可以對資料執行未提交讀或髒讀;在事務結束前可以更
  改資料內的數值,行也可以出現在資料集中或從資料集消失。該選項的作用與在事務內所有
  語句中的所有表上設定 NOLOCK 相同。這是四個隔離等級中限制最小的層級。*/
declare @NumberOfTries int --重試次數
select @NumberOfTries = NumberOfTries + 1 from cs_EmailQueue where EmailID = @EmailID

if @NumberOfTries <= @MaxNumberOfTries
begin --如果重試次數小於最大次數,更新重試次數和第二次重試次數
    update cs_EmailQueue set
        NumberOfTries = @NumberOfTries,
        NextTryTime = dateadd(minute, @NumberOfTries * @FailureInterval, getdate())
    where EmailID = @EmailID
end
else
begin --如果重試次數超過限制,刪除此條郵件
    delete from cs_EmailQueue where EmailID = @EmailID
end
    

GO

cs_Emails_Dequeue
ALTER     PROCEDURE [dbo].cs_Emails_Dequeue
(
    @SettingsID int
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
/**//*設定交易隔離等級,Read UNCOMMITTED  執行髒讀或 0 級隔離鎖定,這表示不發出共用鎖定,
  也不接受排它鎖。當設定該選項時,可以對資料執行未提交讀或髒讀;在事務結束前可以更
  改資料內的數值,行也可以出現在資料集中或從資料集消失。該選項的作用與在事務內所有
  語句中的所有表上設定 NOLOCK 相同。這是四個隔離等級中限制最小的層級。*/
BEGIN

    SELECT * FROM cs_EmailQueue Where SettingsID = @SettingsID and NextTryTime < getdate()
    
END
/**//*列出最後重試發送時間小於目前時間的所有郵件*/




GO

cs_Emails_Enqueue
ALTER   PROCEDURE [dbo].cs_Emails_Enqueue
(
    @EmailTo    nvarchar(2000),
    @EmailCc    ntext,
    @EmailBcc    ntext,
    @EmailFrom    nvarchar(256),
    @EmailSubject    nvarchar(1024),
    @EmailBody    ntext,
    @EmailPriority    int,
    @EmailBodyFormat int,
    @SettingsID int
)
AS
SET Transaction Isolation Level Read UNCOMMITTED
/**//*設定交易隔離等級,Read UNCOMMITTED  執行髒讀或 0 級隔離鎖定,這表示不發出共用鎖定,
  也不接受排它鎖。當設定該選項時,可以對資料執行未提交讀或髒讀;在事務結束前可以更
  改資料內的數值,行也可以出現在資料集中或從資料集消失。該選項的作用與在事務內所有
  語句中的所有表上設定 NOLOCK 相同。這是四個隔離等級中限制最小的層級。*/
BEGIN

    INSERT INTO
        cs_EmailQueue
        (
            emailTo,
            emailCc,
            emailBcc,
            EmailFrom,
            EmailSubject,
            EmailBody,
            emailPriority,
            emailBodyFormat,
            SettingsID
        )
    VALUES
        (
            @EmailTo,
            @EmailCc,
            @EmailBcc,
            @EmailFrom,
            @EmailSubject,
            @EmailBody,
            @EmailPriority,
            @EmailBodyFormat,
            @SettingsID
        )    
/**//*插入新的郵件到郵件隊列中*/    
END





GO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.