我想定期检查我的数据库表。那么如何创建 Web 服务以及如何配置它。
的是,它总是在运行,因此可以进行定期调用。
有很多方法可以做到这一点
(自 ASP.NET 以来)您可以创建一个Windows服务,并在您的服务器上托管此服务,因为服务器始终运行,因此此Windows服务将向您的Web服务,更新数据库或您想要的任何内容发出请求
可以使用 SQL 作业来执行此操作。可以通过 SSIS(SQL Server Integration Service)包从作业调用 Web 服务。这些包本质上非常非常健壮,它们几乎可以执行您希望它们执行的任何数据库活动,包括 Web 服务请求。
最后,您可以使用第三方工具,例如 Quartz.Net
引用:
- 这就是通过 Windows 服务调用 Web 服务的方式。
- 这是通过 SSIS 包调用 Web 服务的方法。
- 这是在 SQL 作业中集成 SSIS 包的方法
- 这是创建Windows服务的方法
- 这是创建 SSIS 包的方法
- 这就是您获得几乎所有问题的答案/教程的方式
例:
所有这些中最简单的是Windows服务。制作Windows服务并将其托管在机器(服务器)上非常简单,请使用给定的链接之一(特别是最后一个链接)。通常,在 Windows 服务中,您会OnStart
事件中执行一些活动。您可以在此OnStart
中放置一个计时器,在TimerTick()
时,您可以请求您的 Web 服务。
像这样:
class Program : ServiceBase
{
System.Timers.Timer timer;
static void Main(string[] args)
{
ServiceBase.Run(new Program());
}
public Program()
{
this.ServiceName = "My Service";
}
protected override void OnStart(string[] args)
{
base.OnStart(args);
InitializeTimer();
}
protected override void OnStop()
{
base.OnStop();
//TODO: clean up any variables and stop any threads
}
protected void InitializeTimer()
{
try
{
if (timer == null)
{
timer = new System.Timers.Timer();
timer.Enabled = true;
timer.AutoReset = true;
timer.Interval = 60000 * 1;
timer.Enabled = true;
timer.Elapsed += timer_Elapsed;
}
}
catch (Exception ex)
{
Utility.WriteLog("Exception InitialiseTimer : " + ex.Message.ToString());
}
finally
{
}
}
protected void timer_Elapsed(object source, System.Timers.ElapsedEventArgs e)
{
TimerTick();
timer.Interval = 60000 * Convert.ToDouble(ConfigurationManager.AppSettings["TimerInerval"]);
}
private void TimerTick()
{
try
{
DownloadFromFTPandValidate objDownLoadandValidate = new DownloadFromFTPandValidate();
objDownLoadandValidate.ProcessMain();
}
catch (Exception ex)
{
Utility.WriteLog("Exception InitialiseTimer : " + ex.Message.ToString());
}
}
}
在这里,类 DownloadFromFTPandValidate
将代码包装到 db 活动。它给你一个想法。
您将需要一个用于定期任务的作业计划程序。我推荐你一个好的。查看此链接: http://quartznet.sourceforge.net/
为什么不使用表上的触发器,该触发器在数据被修改后运行存储过程,然后使用xp_cmdshell访问存储过程的命令行,以便您可以运行例如批处理文件或其他任何内容。