【问题标题】:How to notify user before 7 days that licence expire in 7 days using sql server proc如何使用 sql server proc 在 7 天前通知用户许可证将在 7 天内到期
【发布时间】:2019-07-11 00:14:35
【问题描述】:

我在 SQL Server 的 end_date 和 start_date 列中有一个表,我想在许可证到期前 7 天和前一天向用户发送电子邮件。如何

【问题讨论】:

  • 您不能在 proc 中执行此操作。您可以使用定期运行(或者可能通过消息队列)的 SQL Server 代理作业来执行此操作。
  • 或者windows服务!
  • 如果这就是你想做的,是什么阻止了你?您无需告诉我们您想做什么;你可以做到。你有问题吗?如果是这样,请务必问一个,以便我们为您提供帮助。请向我们展示您已经尝试过的内容以及您遇到的问题。谢谢。

标签: sql sql-server


【解决方案1】:

我想在 7 天前和 1 天前向用户发送电子邮件 该许可证即将到期。

select * from mytable
where 
(CAST(end_date as DATE) = DateAdd(DD,1,GETDATE()))
OR
(CAST(end_date as DATE) = DateAdd(DD,7,GETDATE())) 

因此,如果您通过电子邮件发送不同措辞的到期通知,则可以将其分解为两个单独的查询。

您确实需要每天运行此程序,可以使用调度程序,也可以像其他发帖人指出的那样使用代理作业。

我还没有尝试过,因此您可能还需要将 CAST 放在 DateAdd 周围。我不确定问题中的数据类型是什么。通常最好张贴表格或表格的部分内容,以便我们更好地回答问题。

如果你想要一个糟糕的 mans 调度程序,这是一种非常糟糕的实现方式,你可以这样做borrowed from here

CREATE PROCEDURE MyBackgroundTask
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    -- The interval between cleanup attempts
    declare @timeToRun nvarchar(50)
    set @timeToRun = '03:33:33'

    while 1 = 1
    begin
        waitfor time @timeToRun
        begin
            execute [MyDatabaseName].[dbo].[MyDatabaseStoredProcedure];
        end
    end
END  

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多