Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将事件从存储过程引发到Windows服务_C#_Sql Server_Clr - Fatal编程技术网

C# 将事件从存储过程引发到Windows服务

C# 将事件从存储过程引发到Windows服务,c#,sql-server,clr,C#,Sql Server,Clr,是否可以在Windows服务中触发操作,或者是否可以从存储过程引发可在服务中捕获的事件 如果你想象一个服务每5分钟运行一次,它就会执行一些操作。如果数据库或存储过程中发生了什么,并且我希望在5分钟之前触发此操作,该怎么办 有人有什么想法吗 谢谢 Ed您可以在SQL Server中创建一个CLR过程,该过程以某种方式使用SOAP、远程处理或任何介质与服务进行通信。但这是通用的。我认为SQL Server 2005的查询通知功能在这里会有所帮助。如果您执行raiserror(@ErrorMessag

是否可以在Windows服务中触发操作,或者是否可以从存储过程引发可在服务中捕获的事件

如果你想象一个服务每5分钟运行一次,它就会执行一些操作。如果数据库或存储过程中发生了什么,并且我希望在5分钟之前触发此操作,该怎么办

有人有什么想法吗

谢谢


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,但那不是真的。不管怎样,有人给我指明了查询通知的方向。谢谢你的帮助。我想你是对的,我刚刚读了一本关于查询通知的书,它们似乎是我遇到的问题的正确答案。谢谢