如何在指定的时间对数据库进行更新?

liujiboy 2004-11-24 11:24:59
现在有一个应用需要在特定的时间对数据库进行一次更新。由于时间是变化的,并在数据库中可以读取这个时间。请问应该如何做呢?
我现在用的是Sqlserver数据库,但是数据库好像不支持时间触发这个概念。
用java写一个进程来监控时间,一是效率问题,因为每过一段时间就需要读取数据库提取时间进行比较。二是怕这个进程死掉。
请问怎么办?
...全文
212 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
liujiboy 2004-11-27
  • 打赏
  • 举报
回复
现在用sqlserver的作业机制来完成的。但是不能保证停电之后还执行,因此写了一个存储过程。
zyg158 2004-11-27
  • 打赏
  • 举报
回复
现在有一个应用需要在特定的时间对数据库进行一次更新。由于时间是变化的,并在数据库中可以读取这个时间。

最差的方式就是在你能读取更新时间数据的表中建立一个数据库更新触发器,检测并对应执行相应的更新操作即可
zyg158 2004-11-27
  • 打赏
  • 举报
回复
sqlserver到底支不支持时间触发?!?!

SQL Server自动化管理任务
自动化管理就是按照计划对可预测的管理职责和服务器事件作出响应。通过使用自动化管理,可以节省时间以执行无法预见或无法编程响应而需要创造力的管理任务。

例如,如果希望在每个工作日结束后,备份公司的所有服务器,那么可以创建一项作业来执行该任务。调度该作业在所需的时间运行。作业遇到问题时,SQL Server 代理程序能够记录该事件并发出寻呼。
如果正在运行 Microsoft® SQL Server™ 的多个实例,请使用多服务器管理来自动执行任务。有关更多信息,请参见多服务器管理。

若要使管理自动化,必须:
1.确定哪些管理职责或服务器事件定期执行并可以通过编程方式进行管理。
2.使用 SQL Server 企业管理器、Transact-SQL 脚本或 SQL-DMO 对象来定义一组作业、警报和操作员。有关更多信息,请参见创建作业。
3.运行 SQL Server 代理服务。

自动化管理组件
作业、操作员和警报是自动化管理的三个主要组件。

作业
作业是由 SQL Server 代理程序执行的一系列指定操作。可以使用作业定义一个能执行一次或多次的管理任务,其每次的执行结果是成功还是失败也可以受到监控。作业:

在一个本地服务器上或多个远程服务器上执行。
按照一个或多个调度执行。
由一个或多个警报触发执行。

有关更多信息,请参见创建作业。
z3h 2004-11-27
  • 打赏
  • 举报
回复
最好不要自己用线程实现.jdk 1.4中(应该是)提供了java.util.Timer,java.util.TimerTask,等对象,这些对象可以方便的实现定时操作.

Timer timer = new Timer () ;
timer.scheduleAtFixedRate (new TimerTask () {
public void run () {
long startTime = System.currentTimeMillis () ;
//执行统计
}
} , delay , periodTime) ;
catblue 2004-11-27
  • 打赏
  • 举报
回复
学习一下
chanceqw 2004-11-25
  • 打赏
  • 举报
回复
如果不支持时间触发的话,那只好写个程序来控制了
效率问题应该不大,你可以让你的那个线程sleep()一定的时间
至于说进程可能死掉,其实什么程序都可能死掉的;关键是你有没有把方方面面都考虑到,让你的程序足够强壮。
Tasia 2004-11-25
  • 打赏
  • 举报
回复
让人来手动触发更是不可靠的。一是人的准确性不如机器,二是成本太高。
liujiboy 2004-11-25
  • 打赏
  • 举报
回复
如果不支持时间触发的话,那只好写个程序来控制了
效率问题应该不大,你可以让你的那个线程sleep()一定的时间
至于说进程可能死掉,其实什么程序都可能死掉的;关键是你有没有把方方面面都考虑到,让你的程序足够强壮。
=======================================================================================
sqlserver到底支不支持时间触发?
如果不支持,还真的不如让一个人来控制这个触发。至少人是不会挂掉的。而进程挂掉的可能性要大得多啊。
snow_oracle 2004-11-25
  • 打赏
  • 举报
回复
帮顶
yping2000 2004-11-25
  • 打赏
  • 举报
回复
关注中。。。。
zj_ok 2004-11-25
  • 打赏
  • 举报
回复
如果你的程序不会运行一段时间就死掉,是其他方面造成的,如机器重启之类的就是管理员的责任,管理圆应该保证你的程序在运行中
如果你写的程序要出问题,那没话说
jFresH_MaN 2004-11-25
  • 打赏
  • 举报
回复
呵呵,支持找一个人来定时来更新,那样可以解决一部分人的就业问题嘛

我觉得你可以用一个线程来监控
while(true) {
///读取数据库里的时间
////与上一次的时间比较
不相同:调用一个TimerThread,传给它新的更新时间,由这个TimerThread定时更新数据库
相同:Sleep(sometime);
}
liujiboy 2004-11-25
  • 打赏
  • 举报
回复
让人来手动触发更是不可靠的。一是人的准确性不如机器,二是成本太高。
===================================================================
如果是管理员就非他负责不可了,出了事情扣奖金罚款承担责任。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧