Java+;Ms SQL Server 2008 R2插入后触发通知

Java+;Ms SQL Server 2008 R2插入后触发通知,java,tsql,sql-server-2008-r2,extended-events,Java,Tsql,Sql Server 2008 R2,Extended Events,我需要使用java webgui Vaadin框架编写web应用程序,该框架将通过MsWin2k8R2 NPS插入MsSQL数据库的新记录进行实时更新 由于NPS将日志存储到文件和/或DB中,所以我更喜欢DB,但我想知道当NPS server将数据插入数据库,然后从SQL server通知中重新获取或提取数据并在浏览器中显示时,SQL server如何通知我的java程序 我已经建立了JavaMs SQL连接 我已经知道: SqlDependency类可以使用,但它只适用于.NET,我正在使用

我需要使用java webgui Vaadin框架编写web应用程序,该框架将通过MsWin2k8R2 NPS插入MsSQL数据库的新记录进行实时更新

由于NPS将日志存储到文件和/或DB中,所以我更喜欢DB,但我想知道当NPS server将数据插入数据库,然后从SQL server通知中重新获取或提取数据并在浏览器中显示时,SQL server如何通知我的java程序

我已经建立了JavaMs SQL连接

我已经知道:

  • SqlDependency类可以使用,但它只适用于.NET,我正在使用Java
  • SQLServerServiceBroker-这是SQLServer中的一种功能,可以用于此,但我目前不知道如何正确地执行它,以及它到底是什么
  • SQL扩展事件-同上
  • SQL通知-同上
  • SQL CRL触发器:用C++、C语言或java编写的触发器,在指定的情况下执行,但同步完成,将减慢整个操作
现在。我找到了以下帖子:

我建议在调用SQLServerServiceBroker的表上设置一个触发器,然后(异步)执行一个CLR存储过程,该过程在不同的线程中完成所有工作

但我不知道怎么做

所以我需要的是: SQL Server中的简单表,当将数据插入其中时,它会以某种方式通知我的Java程序。它可以使用RESTWeb服务、JMS或任何与语言无关的东西


请提供分步示例/解决方案。

您可以使用SQL的触发器功能。 有一个解决方案:

  • 调用存储过程的表的SQL触发器
  • 存储过程调用一些c#代码,这些代码将由http提供REST服务
  • 后端将处理来自存储过程的http请求

  • 是否可以从触发器中异步执行存储过程?我看到有人说这样做会大大降低DB的速度,我不能让这种情况发生,所以异步执行是必须的。但是谢谢你的回复。当我检查这是否有效时,我会将这个答案标记为ummm答案:-)触发器是性能问题。你是对的。您不能异步调用sql sp,但可以对调用REST服务的c代码进行异步调用。