利用Windows服务实现数据库数据监控

时间:2022-10-30 09:00:19

利用Windows服务实现数据库数据监控

摘要:对数据库中的数据进行有效监控是实现数据库系统完整性的重要途径。该文主要阐述如何利用Windows服务对数据库数据进行有效监控,实现了对异常情况的捕捉,并通过电子邮件服务给出警告信息,对实现系统的完整性起到了一定的保障作用。

关键词:Windows服务;电子邮件服务;数据监控

中图分类号:TP311文献标识码:A文章编号:1009-3044(2009)36-10457-02

Monitoring Database Table by Windows Services

HU Jun-min

(School of Business Administration, Jimei University, Xiamen 361021, China)

Abstract: To achieve the integrity of database systems,it is an important way to monitor the data in database table. This paper explains how to use Windows services to monitor the database data effectively. Capture any wrong data, and then send a warning message through e-mail service. The approach plays a certain amount of protection to keep the integrity of the database system.

Key words: Windows services; Email service; data monitoring

在数据库系统持续运行中,需要时刻关注系统自身和外界环境等可能产生的潜在影响和可能的危险,并及时予以处理。比如人力资源管理系统中的考勤管理子系统,涉及到的硬件有考勤机,如果个别考勤机由于通讯、停电等问题造成通讯故障,而后续的相关程序没有觉查到该危险还继续往下执行的话,就会造成数据遗漏处理的严重后果。通过对相应数据的监控是能够避免类似风险的。本文主要探讨如何利用Windows服务实现对数据库数据的有效监控。

1 Windows服务浅析

在Windows系统中一直运行着多种类型的服务。如Windows time、SQL Server、Internet Information Server(IIS)等程序(当然服务的类型与你安装的程序有关),这些都是Windows服务。使用Windows 服务可以持续地监控计算机上所发生的每一事件或执行计算机上的每一个任务。例如,通过手机定期收到的股票信息大多也是通过股价播报系统服务来实现的。信息供应商从web站点上收集到股票结果以及股市行情,并把这些信息以电子邮件的形式发放给每一个客户。在这个系统里,信息将每几分钟或每几秒钟自动更新一次。

其实,Windows服务是一个程序,当我们启动操作系统后不需要用户登录该系统时,该程序就可以自动启动(需要将该服务的启动类型设置为自动启动)。当应用程序在后台运行时,我们并不需要和该应用程序进行任何交互。

通过平台,可以轻易地创建Windows服务。在创建一个服务应用程序时,主要是定义一些代码来控制服务开始和停止的时间,向服务发出什么命令,以及命令被接收后将执行什么样的操作。这些都是通过编写服务的事件代码来实现的。例如:OnStop和OnStart事件。通过OnStart事件代码告诉应用程序在程序启动时需要执行哪些命令。这有点像一个控制台应用程序中的Main过程,它是我们的启动代码。因此,一旦放入了服务启动程序,我们想要发生的操作将要被执行。

2 如何实现及部署监控

数据库监控范围很多,比如硬盘空间、系统性能等,监控方法也很多。本文要探讨的是如何监控数据库中的敏感数据。下面就以人力资源管理系统中的考勤管理子系统为例,其对应数据处理的简要流程有:

步骤1. 员工在考勤机上打卡;

步骤2. 系统自动收集考勤机的考勤信息;

步骤3. 值班人员第二天早上运行考勤逻辑处理程序。

很显然风险在于执行步骤3。如果系统没有收集到所有考勤机的考勤信息,那么就会造成部分员工旷工,或缺卡。如何有效地监控考勤机呢?我们只需要在考勤机内的程序增加一个功能:定时发送信息到数据表,然后编写一个Windows服务对这个数据表的数据进行监控即可。其中核心的程序如下:

Dim WS_CheckTerminal As New System.Threading.Thread(AddressOf JustDoIt)

Protected Overrides Sub OnStart(ByVal args() As String)

Me.GetServicePara():主要功能是取系统的配置参数。

WS_CheckTerminal.Start()

End Sub

Private Sub JustDoIt()

While True

CheckData()

Dim OBJ As New ErrorLog()

End While

End Sub

其中,需要检查的逻辑就是存放在CheckData()函数中。同时,对任何捕捉到的异常信息(如某台考勤机出现故障,该考勤机就没有正确发送信息到指定表。)必须能及时、方便的通知值班人员。我们可以使用电子邮件进行异常信息。

在.NET中,可以通过MailMessage、MailAttathment和SmtpMail等类对象使用电子邮件服务:

・MailMessage类用于建立一个电子邮件信息,它定义将把哪些信息、信息主题、优先权及信息的附件发送给谁。其中,相应的邮件信息可以存放在配置文件中。

・MailAttachment类用来定义伴随消息一起发送的附件列表。

・SmtpMail类为发送信息提供实际机制,它使用了Send方法,并把MailMessage对象作为它的一个参数。

Private Sub SendMail(ByVal subject As String, ByVal a_SendFrom As String, ByVal a_SendTo As String, ByVal a_CCTo As String, ByVal message As String, Optional ByVal FileName As String = "")

Try

Dim mail As New MailMessage()

Dim evg As New ErrorLog()

Dim smtpMail As New .Mail.SmtpClient

SmtpMail.Host = GetConfig(ConfigType.Smtp)

SmtpMail.Send(GetConfig(ConfigType.Sender), GetConfig(ConfigType.SendTo), subject, message)

Catch ex As Exception

Throw ex

End Try

End Sub

我们必须在计算机中安装和配置SMTP(简单的邮件传输协议,Simple Mail Transfer Protocol)邮件服务。

这样,才能使用.NET中的电子邮件服务。

此外,Windows服务应用程序不能在IDE或命令行中运行,它们必须安装到Windows环境里,这样才能控制这些服务应用程序。我们可以使用一个安装程序,或使用InstallUtil.exe命令行实用程序安装该服务。

3 结论

如何实现对敏感数据进行有效监控是一项非常重要而又艰巨的任务。通过Windows服务可以实现对数据库数据的有效监控,并通过电子邮件服务及时将监控到的异常信息发送给相关的管理人员。由于Windows服务采用了线程技术,其占用系统资源少、执行效率高,是一个简单有效的方法。实际工作中,可以先确定哪些是数据库系统中的敏感数据,然后对这些数据进行监控,这对实现系统的完整性起到了一定的保障作用。

参考文献:

[1] Barwell.F,Blair.R,et 高级编程[M].康博,译.北京:清华大学出版社,2002.

[2] Bill.E,Hollis.B et al.VB 2005 &.NET 3.0高级编程[M].杨浩,译.5版.北京:清华大学出版社,2008.

上一篇:Web数据库安全问题的探讨 下一篇:企业防火墙双机试验浅析