Windows计划任务/sql服务器随机时间



我正在处理以下情况,大部分问题都已解决。我目前在一台机器上有以下文件夹和文件。

C:foofoo.sql
C:foofoo.bat

"foo.sql"-是一个脚本文件,其中有一行非常简单:

EXEC uspUpdateCounts

"foo.bat"-调用SQLCMD来调用execute foo.sql,并将调用的存储过程的任何输出记录到具有当前时间和日期戳的文本文件中(每天只运行一次):

"C:Program FilesMicrosoft SQL Server100ToolsBinnSQLCMD.EXE" -S SvrNme -E -d dbName -i C:foofoo.sql -o "C:foofooOutput_%date:~-4,4%%date:~-10,2%%date:~-7,2%.txt"

我目前正在使用一个windows计划任务来启动foo.bat。我想知道是否有一种方法可以将时间脚本化为每天随机发生,在太平洋标准时间早上6点到下午1点之间运行。我在这里和那里找到的脚本中篡改了一些时间组件,但我无法将其随机化。我可以得到时间,但不是很可靠,但在这一点上我完全迷失了方向。如果有人能帮我解决这个问题,并解释解决方案,那就太好了。我不仅仅是在寻找答案,我也在学习。

@echo off
setlocal enableDelayedExpansion
for  %%# in (MON,TUE,WED,THU,FRI,SAT,SUN ) do (
    rem clear old tasks
    SCHTASKS /Delete /TN DailyRandom%%# /f >nul 2>&1
    rem random minute between 0 and 60
    SET /a rand_min=!RANDOM!*59/32768+1
    rem random hour between 6 and 13
    set /a rand_h= !RANDOM!*6/32768+1
    set /a rand_a=!RANDOM!*7/32768+1
    set /a rand_h=rand_h+rand_a
    if !rand_min! LSS 10 set "rand_min=0!rand_min!"
    if !rand_h! LSS 10 set "rand_h=0!rand_h!"
    SCHTASKS /Create /SC weekly /D %%#  /TN DailyRandom%%# /ST !rand_h!:!rand_min! /TR C:foofoo.bat
)

未测试并且不确定您需要所有SCHTASKS中的哪一个(请查看它的帮助)。您需要每周运行该脚本。它创建了一个DailyRanomMON,DailyRanomTUE。。。,DailyRanomSUN任务将设置在06:00至13:59之间(可能需要调整数字)。

最新更新