我有个存储过程,原来处理数据量2400万,用时2小时10分钟执行方法为VB.NET写的客户端windows窗口程序,调用服务器上的批处理文件,然后批处理调用服务器的SQLCMD 执行服务器上的存储过程
后来要求提高速度,VB.NET用了多线程,分成4个线程,线程可以去调用批处理文件,也可以直接调用存储过程但是现在要求客户端执行后没有SQLCMD的DOS窗口,或者VB.NET窗口程序可以关闭,执行后让服务器去处理所以想用批处理写windows2008的计划任务,要求一个任务结束后再去执行下一个任务,不然服务器会因为并行度过高,把一些任务挂起,并且一直挂起请问有没有有经验的大侠,给一个思路?

解决方案 »

  1.   

    没看懂LZ的问题. Scheduled Task里运行您的批处理文件, 批处理文件里难道不是串行的么, 难道不是一个任务结束在执行下一个任务? 至于SQLCMD也好, VB的APPLICATION也好, 难道不是运行完了, DOS窗口或WINDOWS窗口自动关闭的么?
      

  2.   

    既然是用VB.NET的写的,又需要实现“但是现在要求客户端执行后没有SQLCMD的DOS窗口,或者VB.NET窗口程序可以关闭,执行后让服务器去处理”
    那直接写成服务形式在后台执行。
      

  3.   

    如果只是执行SQL那干脆让MSSQL定时执行不得了,计划任务里可以指定周期
    如果非要使用VB客户端调用而不能在MSSQL上配置,可以写出windows service反正你VB调用的都是SQL,数据库可以完成的,不需要使用VB客户端调用
    如果有特殊需求必须使用VB调用,那你最好写成一个service
      

  4.   

    没写过,参考:Schtasks命令详解(计划任务DOS批处理)
      

  5.   

    找到了,这个是我原来写的创建任务,在每天3点 执行一个batschtasks /create /tn "Amos2 DB Backup" /tr d:\amos2\DBbackup\AMOS2DB_BACKUP.bat /sc daily /st 03:00:00 /ru "System"
      

  6.   


    可能我描述的不清楚,现在必须用VB.NET的原因是,很多存储过程的参数需要一个可视化的界面来设置然后VB.NET调用服务器上的BAT文件,然后BAT文件里面像8楼那样用命令向服务器的任务列表里追加任务。这样任务追加完了,就算是BAT处理完了,这样VB.NET的窗口程序就可以关闭了。现在的问题是,追加任务的部分,怎么写,可以让任务自动顺序一个一个处理,我记得win2008sr2版,vista,win7的任务计划,支持任务的触发事件的,就是不知道具体怎么写,来判断前一个SQL正确执行结束,激活下一个任务
      

  7.   

    可以不用计划任务,用ssis执行command命令,用job执行ssis包就可以了.
      

  8.   

    SQL Agent也可以用程序创建啊。。不用计划任务
      

  9.   


    能说详细些么?比如command命令是指CMD模式下的command命令?
    job是指sqlserver的job?
      

  10.   

    建议楼主用SQLServer JOS来实现,客户端只是简单的启动服务端的JOB就可以了