发新话题
打印

[新手资料] 如何进行Sybase ASE的任务自动调度?

如何进行Sybase ASE的任务自动调度?

今天遇到一个问题,要在Sybase ASE 12.5.3上定时调度一个存储过程。在经过一番折磨后终于搞定了这个优点棘手的问题。

总得说来,在数据库中定时执行存储过程主要有以下三种方式:
1、自己写个Java程序,通过JDBC去掉用存储过程;
2、编写Unix Shell脚本,通过数据库接口调用存储过程,并将这个Shell脚本递交给Crontab调度;
3、使用数据库自身的定时调度机制,而这个在不同的数据库系统下又有不同的实现方法。

从实现的方便性上来说,第3种方法是最简便快捷的。如Oracle数据库中的复制任务,ASIQ数据库中的Event等都可以定时执行某个任务。但是在Sybase ASE 种则稍微有些复杂,因为ASE数据默认安装的时候是不支持任务的自动调度的,需要额外的步骤安装配置任务调度器(Job Scheduler)。而且,任务的自动调度也是在ASE 12.5.1及以后的版本才支持的。

下面就把ASE Job Scheduler得安装配置方法介绍如下。

1、安装Job Scheduler
      Job Scheduler的安装主要分以下几步:
      a.  创建数据库设备sybmgmtdev ,该设备至少要60MB大小,通常建议100MB.
      b. 运行installjsdb脚本 ,命令格式:
       isql –Usa –Psa_password –Sservername –i  $SYBASE/$SYBASE_ASE/scripts/installjsdb
      c. 在Interface文件中加入JS_AGENT Server的信息
            hyl_jsagent
                            master tcp ether server_machine 14231
                            query tcp ether server_machine 14231
       d. 在sysservers表中加入Js_Agent ,命令格式:
             sp_addserver SYB_JSAGENT,null,hyl_jsagent
       e. 使Job Scheduler生效,命令格式:
             sp_configure "enable job scheduler",1
       f. 启动Job Scheduler,可以重启ASE服务器,或者用以下命令:
            use sybmgmtdb
            go
            sp_js_wakeup "start_js",1
            go
   在这些步骤完成之后,用Sybase Central登陆ASE后,就可以在图形界面上看到Job Scheduler得功能菜单了。但这个时候还不能定义并执行Job,还需要以下一些配置。

2、配置任务调度用户
      a.增加任务调度用户的login
         sp_addlogin job_operator ,'123456', sybmgmtdb
         go
     
      b.增加任务调度用户
        sp_adduser job_operator
        go
   
      c.给用户赋予任务调度的角色
    sp_role 'grant',js_admin_role,job_operator
    go
    sp_role 'grant',js_user_role,job_operator
    go
    sp_modifylogin job_operator,'add default role',js_user_role
    go
    sp_modifylogin job_operator,'add default role',js_admin_role
    go

3、设置对目的服务器的访问
   这里有两个概念,一是任务调度服务器,就是Job Scheduler安装运行的ASE服务器。另外一个就是目的服务器,就是要调用的对象如SQL或者存储过程所在的服务器。
   Job Scheduler将所有的目的服务器作为远程服务器对待。所以,这里要设置Job Scheduler对目的服务器的访问。
   a. 将Target Server加入sysservers表中
     sp_addserver hyl_cx
     go
     select  * from sysservers
     go
   b. 设置任务调度服务器可以访问Target Server得用户
     sp_addexternlogin hyl_cx, job_operator, user ,'xxxxx'

以上三步完成之后,就可以在任务调度服务器中定义任务和调度了。

对于喜欢用命令得用户来说,就是熟悉ASE得任务定义存储过程。不过,这里建议还是使用Sybase Central 得图形用户界面进行任务的调度。这里就不再多说了。

TOP

发新话题