cs_EmailQueue_Failure///cs_Emails_Dequeue///cs_Emails_Enqueue
生活随笔
收集整理的這篇文章主要介紹了
cs_EmailQueue_Failure///cs_Emails_Dequeue///cs_Emails_Enqueue
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
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
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
轉載于:https://www.cnblogs.com/ruanbl/archive/2006/09/05/494905.html
總結
以上是生活随笔為你收集整理的cs_EmailQueue_Failure///cs_Emails_Dequeue///cs_Emails_Enqueue的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 首届世界CSS设计大赛结果揭晓
- 下一篇: 需求变更的处理