2011-03-26 91 views

回答

3

创建Windows Service,使在Windows启动时,建立一个timer它开始,创建一个event用于处理定时器的elapsed event,你是好去。

+1

这种方式矫枉过正,恕我直言。调度程序是一打的。 – 2011-03-26 04:11:31

+1

@Seva可能过度杀伤,但基于@PARTH提供的信息,我明白他想要一个自动化过程。 – vlad 2011-03-26 04:13:31

+0

@vlad:是的,但不能使用web服务完成? – 2011-03-26 04:22:43

0

时间存储在数据库中是绝对必要的吗?通常,他们使用外部调度程序服务(任务计划程序或SQL代理)。并通过运行带有服务URL的命令行HTTP客户端来调用该服务。例如,Curl可以工作,或者您可以使用XMLHTTP调用将快速JavaScript放在一起,并用cscript.exe调用它。另外,如果数据处理可以完全实现为存储过程,则不需要Web服务和shell脚本。直接从SQL Agent调用该过程(假定为MS SQL Server)。

编辑:那么你已经相当复杂的设计。说,你想要多长时间?你想把时间精确到一分钟,一小时,一天吗?如果期望的精确度是几分钟内的事情,那么你可以做什么。在数据库中有一个过程。让它在精度边界上执行(通过SQL代理) - 比如每5分钟执行一次。让它检查是否现在是运行服务的时间。如果是这样,请让它调用服务。 XMLHTTP和OLE自动化可能是要走的路;查看系统过程sp_OACreate,sp_OAMethod。事情是这样的:sp_OAxxx都认为,理所当然,非常不安全,有需要相当的权限来运行

declare @o int 
exec sp_OACreate 'Msxml2.XMLHTTP', @o output 
exec sp_OAMethod @o, 'open', @bstrMethod='GET', @bstrUrl='http://what-have-you/' 
exec sp_OAMethod @o, 'send' 

程序。

+0

是的时间将在数据库中设置。否数据处理不能作为存储过程实现。所以我需要一个web服务。那么我怎么能使用webservice – 2011-03-26 04:24:50

1

Web服务不适合执行此任务。它们旨在响应请求而运行。您需要运行代码来响应一天的时间。

我同意创建Windows服务的建议。如果你不想这样做,那么创建一个简单的控制台应用程序,并通过计划任务运行它。