ASP中实现执行定时任务的方法

一个很常见的 ASP 问题 : “如何定时工作流程执行网页?”, 之所以会问这个问题大部分是因为管理员可能会利用一个 ASP 网页来作数据库维护的动作, 如备份, 在 Windows NT 平台有一个方法可以做工作流程, 那就是 AT 指令 + Schedule 服务,就是计划任务, 但很可惜的是你并没有法度在命令列 (Command-Line) 执行 ASP 网页 。

当然你可以在命令列执行 IE 并告诉它要求执行的网页, 例如:
c:\program files\internet explorer\iexplore.exe http://localhost/mypage.asp,
不过, 这绝对不是大部分的网站管理者所要的方法, 因为这必须要开启浏览器, 花费许多的系统资源, 此外, 还有一个缺点, 那就是执行 ASP 网页有逾时时间 (Timeout), 如果你要执行许多的流程工作, 你可能要更改 Timeout 时间, 太麻烦了,直接忽视。

在这一篇文章要介绍的是使用 WSH (Windows Scripting Host) 的解决方案。

假设你现在有一个广告轮拨系统, 你想将检查广告到期日这件工作自动化每天凌晨执行, 也就是当一则广告过期了, 便将其广告状态更改为停用, 我们先来看看资料表 AdInfo 字段 。

复制代码 代码如下:
AdId 广告代码 INT
AdName 广告名称 VARCHAR(64)
ValidToDate 广告到期日 DateTime
AdStatus 广告状态 INT (0为停用, 1为进行)

接下来看看如何用 WSH, 基本上和 ASP 的写法是一样的除了不需加上 ASP 分隔符,不能使用Server.,存盘的扩展名为 .vbs 。

由于不是使用 asp.dll , 因此没有 ASP 的对象模式并不适用,所以这样写Server.CreateObject会报错。

利用 WSH 作定时工作流程 :
复制代码 代码如下:
'请勿用 Server.CreateObject
Set oConn = CreateObject("Adodb.Connection")
oConn.Open YourConnString
sSQL = "update AdInfo set AdStatus=0 " _
   & "where ValidToDate< ='" & Date & "'"
oConn.Execute(sSQL)
oConn.Close
Set oConn = Nothing

存为 c:\scripts\updateadstatus.vbs,
WSH 有两个版本, 一为窗口版 (wscript.exe), 一为命令列版 (cscript.exe),。

在这个例子我们将使用 (cscript.exe), 你可以在 DOS 命令列下执行 :
复制代码 代码如下:
c:\>cscript c:\scripts\updateadstatus.vbs

接着你可以到数据库下查询资料是否更新, 在实际的应用上, 建议你使用批此档来区分不同时段的工作, 好比说我会创造一支名为 dailytask.bat 的批次档来执行所有的每日例行工作, 如此一来, 我只需将所有每日应执行的 script 放到这支批次档即可, 然后利用 AT Command 或是 SQL Server Agent 定时每日执行 dailytask.bat 。

强烈建议使用 SQL Server Agent, 这会比使用 AT Command 来得有效率且稳定!

设定 SQL Server Agent 你可以执行 Enterprise Manager, 展开后会看到这样的画面。
复制代码 代码如下:
鼠标右点 Jobs, 选择 New Job 。
选择 Step 按 New 。
指定 Step Name , Type 请选择 Operating System Command, 并设定执行的 Command 。
选择 Schedule 设定你的流程。

下面是数据库的截图:

时间: 2024-08-02 13:50:19

ASP中实现执行定时任务的方法的相关文章

ASP中实现执行定时任务的方法_应用技巧

一个很常见的 ASP 问题 : "如何定时工作流程执行网页?", 之所以会问这个问题大部分是因为管理员可能会利用一个 ASP 网页来作数据库维护的动作, 如备份, 在 Windows NT 平台有一个方法可以做工作流程, 那就是 AT 指令 + Schedule 服务,就是计划任务, 但很可惜的是你并没有法度在命令列 (Command-Line) 执行 ASP 网页 . 当然你可以在命令列执行 IE 并告诉它要求执行的网页, 例如: c:\program files\internet

ASP中五种连接数据库的方法

连接数据库 ASP中五种连接数据库的方法 简介 介绍ASP连接sql,连接access,等数据库的方法! 正文 ASP中五种连接数据库的方法 第一种 - 这种方法用在ACCESS中最多 strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.MapPath("aspfree.mdb") set conn = server.createobject("adodb.connect

ASP中连接数据库的5种方法

连接数据库 ASP中连接数据库的5种方法 <BR>(01-3-30 199) <BR><BR><BR>from: chinaasp.com by caoli <BR><BR><BR>第一种 - 这种方法用在ACCESS中最多 <BR><BR>strconn = "DRIVER=Microsoft Access Driver (*.mdb);DBQ=" & Server.M

ASP中处理数据库图像的方法

数据|数据库 ---- Active Server Pages (ASP) 是服务器端的脚本编写环境,您可用它来创建动态 Web 页或生成功能强大的 Web 应用程序,ASP 使这些工作变得十分简单.ASP 页是包括 HTML 标记.文本和脚本命令的文件.ASP 页可调用 ActiveX 组件来执行任务,例如连接到数据库或进行商务计算.通过 ASP,可为您的 Web 页添加交互内容或用 HTML 页构成整个 Web 应用程序,这些应用程序使用HTML页作为您的客户的界面. ---- 在我们使用A

ASP中实现文件上传方法的研究

上传 摘要:在基于浏览器/服务器的应用环境中,在浏览器中上传各种类型的文件一直是困扰用户文件管理应用的难题之一.在HTTP中上传文件有三种机制:RFC1867,PUT和WebDAV.常用的实现方法是利用在RFC1867中引入的一个新类型:File以及ADO Stream对象.本文对上述上传方法及实现原理作了论述,并给出了具体解决实例. 关键词:ASP 组件 FILE对象 当前,基于浏览器/服务器模式的应用比较流行.当用户需要将文件传输到服务器上时,常用方法之一是运行FTP服务器并将每个用户的FT

在asp中使用js的encodeURIComponent方法

大家知道,在js里encodeURIComponent 方法是一个比较常用的编码方法,但因工作需要,在asp里需用到此方法,查了好多资料,没有很好的方法,最后用了下面这个方法,基本解决了问题. <% Function aspEncodeURIComponent(sStr) aspEncodeURIComponent = myEncodeURIComponent(sStr) %> <script language="javascript" type="text

在asp中使用js的encodeURIComponent方法_应用技巧

大家知道,在js里encodeURIComponent 方法是一个比较常用的编码方法,但因工作需要,在asp里需用到此方法,查了好多资料,没有很好的方法,最后用了下面这个方法,基本解决了问题. 复制代码 代码如下: <% Function aspEncodeURIComponent(sStr) aspEncodeURIComponent = myEncodeURIComponent(sStr) %> <script language="javascript" type

asp中调用.net dll文件方法

1. 在.net Visual Studio 中新建一个Class项目. 2. 在项目中新添加一个类,代码如下:  代码如下 复制代码 using System; namespace ClassLibrary1 {    //定义接口,这点很重要 (此接口中的方法与COM组件中的方法一致)     public interface iClass1     {         string   test()   ;     }     public class Class1 : iClass1  

ASP中如何执行存储过程?

1. 什么是存储过程?存储过程是SQL server所提供的Tranact-SQL语言所编写的程序.2. 如何建立存储过程?Create Procedure EmployeeID_Orders@EmployeeID as intasselect * from orderswhere employeeID=@EmployeeID3. ASP中执行存储过程:A. 编写sql语句:"execute 存储过程名 参数",再通过connection.execute或recordset.open执