【问题标题】:Sending mail when a table is updated更新表时发送邮件
【发布时间】:2009-08-24 17:01:52
【问题描述】:

我的名字是 Tayyeb,我最近完成了 SQL Server 2005 课程。我目前是一名 Windows 系统管理员。

我是数据库的新手,我的问题是我们有一个数据库,如果表得到更新,那么我想收到一封电子邮件,说明更新了什么。

谁能帮我解决这个问题?

提前致谢

【问题讨论】:

    标签: sql-server triggers


    【解决方案1】:

    您可能想在桌子上设置insert and update triggers 并让他们调用msdb.dbo.sp_send_dbmail stored procedure.

    【讨论】:

    • 请注意更新表格的方式,因为您可能会生成大量电子邮件。
    • +1:这里的读者应该注意使用“dbmail”过程(SQL Server 2005 中的新功能)而不是 SQL Mail 过程的重要性。在许多其他改进中,DBMail 过程异步发送,因此可以安全地从触发器中使用。 (你应该永远使用来自触发器的同步通信,非常糟糕的juju)。
    • 通过触发器的“安全”,我的意思是它永远不会锁定用户试图访问表。电子邮件“泛滥”完全是另一回事。
    【解决方案2】:

    创建一个表,用于存储该特定表中上次更新的日期时间。

    为您的表设置一个触发器,在更新时更新日期时间。

    让外部应用程序定期轮询日期时间,如果更改,请发送电子邮件。

    【讨论】:

      【解决方案3】:

      使用触发器是给定的。无论是 DBMail 解决方案还是轮询过程,都可以使用。如果您使用轮询过程,请继续并在轮询过程运行时将轮询间隔设置为可以更改的值(如果可能)。您将遇到的问题是,如果您想测试或调试它,您将不想等待完整的轮询间隔。如果间隔是 5 分钟,您要么必须重新启动轮询器,要么有一个单独的轮询间隔来检查轮询间隔是否改变(我们可以说是递归的吗?)。所以在编写轮询器时要考虑到调试/测试。

      这可能足以说服您使用 DBMail 解决方案。我从来没有使用过它,所以其他人不得不谈论它。

      【讨论】:

        猜你喜欢
        • 2013-03-26
        • 2015-05-09
        • 1970-01-01
        • 1970-01-01
        • 2022-07-09
        • 2017-12-01
        • 2018-04-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多