SQL触发器可以调用Web服务吗?

Jac*_*tti 14 rest triggers web-services sql-server-2005

我正在为iPhone应用程序构建RESTful API.

当用户"签入"[将新行插入表格]时,我想从该插入中获取数据并调用Web服务,该服务将根据该插入发送推送通知.

我能想到这样做的唯一方法是通过a trigger或者实际插入方法,在成功插入后调用Web服务.这对我来说似乎是一个坏主意.

想知道你是否对此有任何想法,或者是否有一个我没有想过的更好的方法.

mar*_*c_s 18

即使技术上可行,但这确实不是一个好主意!触发器应该非常精简,它绝对不应该涉及冗长的操作(网络服务肯定是这样)!重新思考你的架构 - 应该有更好的方法来做到这一点!

我的建议是将您需要在触发器中调用Web服务的"注意"任务与实际执行该Web服务调用分开.

就像是:

  1. 在你的触发器代码中,插入一个"稍后调用web服务"到表中(只是INSERT为了让它保持精简和快速 - 这就是全部)

  2. 有一个异步服务(一个SQL作业,或者最好是一个Windows NT服务),它将这些调用与实际的触发器执行分开,并将从该Web服务检索到的任何数据存储到数据库中的相应表中.

触发器是一个非常挑剔的东西 - 它应该总是很快,非常精简 - INSERT最多做一两个 - 并且无论如何都要避免触发器中的游标或其他冗长的操作(如Web服务调用)

布伦特·奥扎尔(Brent Ozar)有一个很棒的网络广播(在SQL PASS上发布),关于10个开发人员的错误,不进行扩展和触发是他关注的第一件事!强烈推荐