C# 将事件从存储过程引发到Windows服务
是否可以在Windows服务中触发操作,或者是否可以从存储过程引发可在服务中捕获的事件 如果你想象一个服务每5分钟运行一次,它就会执行一些操作。如果数据库或存储过程中发生了什么,并且我希望在5分钟之前触发此操作,该怎么办 有人有什么想法吗 谢谢C# 将事件从存储过程引发到Windows服务,c#,sql-server,clr,C#,Sql Server,Clr,是否可以在Windows服务中触发操作,或者是否可以从存储过程引发可在服务中捕获的事件 如果你想象一个服务每5分钟运行一次,它就会执行一些操作。如果数据库或存储过程中发生了什么,并且我希望在5分钟之前触发此操作,该怎么办 有人有什么想法吗 谢谢 Ed您可以在SQL Server中创建一个CLR过程,该过程以某种方式使用SOAP、远程处理或任何介质与服务进行通信。但这是通用的。我认为SQL Server 2005的查询通知功能在这里会有所帮助。如果您执行raiserror(@ErrorMessag
Ed您可以在SQL Server中创建一个CLR过程,该过程以某种方式使用SOAP、远程处理或任何介质与服务进行通信。但这是通用的。我认为SQL Server 2005的查询通知功能在这里会有所帮助。如果您执行raiserror(@ErrorMessage,16,1),只要您使用严重性和状态为16和1,它就会在客户端生成异常。听起来您根本不应该使用windows服务。我会设置一个SQL作业,每5分钟运行一次,然后设置一个触发器,或者在必要时手动运行该作业 编辑:
但是,如果服务在数据库之外执行某些操作,则可以使用xp\u cmdshell运行系统命令(但这不是最佳选项) 根据Mehrdad的评论,我能够在.NET框架中使用SQLDependency类解决这个问题 此类允许您注册SQL查询及其连接,当该查询的结果更改时,将引发一个事件以指示数据的更改 这使我几乎可以在瞬间捕捉到数据更改并进行适当的处理 要使用此类,您需要在要查询的数据库上启用查询通知,请参见:
可以找到一个在Windows应用程序中如何使用此类的好例子。DTS可能是比Windows服务更好的解决方案。作业的想法并不能解决我的问题。你还有时间问题。我希望能够执行数据库中某个特定操作的结果。我不想为我可能要执行的每个动作都创建一个作业。好吧,在不知道你要执行什么样的动作以及你要执行的标准的情况下,我无法进一步回答。我理解你说的scotty,但那不是真的。不管怎样,有人给我指明了查询通知的方向。谢谢你的帮助。我想你是对的,我刚刚读了一本关于查询通知的书,它们似乎是我遇到的问题的正确答案。谢谢