2014-09-19 4 views
1

나는 다음과 같은 상황에서 해결 된 문제의 대부분을 해결하려고합니다. 현재 다음 폴더와 파일이 컴퓨터에 있습니다.Windows 예약 된 작업/SQL 서버 임의의 시간

EXEC uspUpdateCounts 

"foo.bat"- foo.sql을 실행하고 로그 전화 SQLCMD를 호출 -

C:\foo\foo.sql 
C:\foo\foo.bat 

"foo.sql는"거기에 아주 간단한 라인을 가지고 스크립트 파일입니다 현재 시간과 날짜 스탬프 텍스트 파일로라는 저장 프로 시저에서 출력 (이 만 하루에 한 번 실행됩니다) : 나는 현재 내가 것 foo.bat 킥오프 작업을 예정 창을 사용하고

"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE" -S SvrNme -E -d dbName -i C:\foo\foo.sql -o "C:\foo\fooOutput_%date:~-4,4%%date:~-10,2%%date:~-7,2%.txt" 

알고있는 사람이 있다면 y 매일 오전 6 시부 터 오후 1 시까 지 무작위로 실행되는 시간을 스크립트로 작성할 수 있습니다. 나는 여기 저기에있는 스크립트에서 시간 구성 요소를 사용하여 혼란에 빠졌지 만 분당 시간을 무작위로 추출 할 수는 없습니다. 나는 시간을 얻을 수 있지만 그다지 신뢰할 수는 없지만이 시점에서 나는 완전히 잃어버린 다. 누군가가이 솔루션을 통해 나를 도울 수 있고 또한 솔루션을 설명 할 수 있다면 좋을 것입니다. 나는 대답을 찾는 것이 아니라 배우기도합니다.

+0

0에서 60 사이의 난수 'SET/a _rand = % RANDOM % * 60/32768 +1' – npocmaka

+0

내 무지를 용서하지만 이해가 안됩니다. 그 명령은 내가 위에서 언급 한 시간 사이에 월요일 스케줄러를 일요일에 호출하도록 어떻게 할 것인가? – SSISPissesMeOff

+0

'waitfor/t % random % fred'는 배치 파일에서 최대 32000 초 (9 시간)를 기다립니다. 축척하려면'set/a'을 사용하십시오. – Noodles

답변

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:\foo\foo.bat 
) 

하지 있는지 테스트 회원님이 필요합니다 (이 도움의 확인) .And 당신이 모든 week.It이 DailyRanomMON를 생성하는 스크립트를 실행해야합니다 schtasks 모두있는 DailyRanomTUE ..., 06 : 00 ~ 13 : 59 사이에 설정된 DailyRanomSUN 작업 (숫자 조정 필요)

+0

이 스크립트의 출력을 로그 파일에 기록했으며 필자가 원하는 것과 똑같은 모양을하고 있습니다. 나는 아직 한계 시간을 찾지 못했습니다. 도와 줘서 고마워. – SSISPissesMeOff

+0

나는 이것을 2 주 이상 테스트했지만 처음에는 이상적 이었지만 뭔가를 알아 차렸다. 시대가 시작되자. (내 문제에 대한 범위를 벗어났습니다.) 서버에서 tzutil/g을 실행하면 해당 설정이 CST로 설정됩니다. 이후 답변을 임의의 시간 수식을 전혀 이해가 안돼,이 작품을 제대로하기 위해 조정해야 할 말해 줄 수 있습니까? 또한 당신이 나에게 시간에 대한 임의의 함수를 설명하는 것을 꺼려한다면. 숫자가 의미하는 것 – SSISPissesMeOff

+0

@SSISPissesMeOff -'% random %'변수는 0과 32767 사이의 난수를 생성합니다. '! RANDOM! * 59/32768 +1'은'1'과'59' 사이의 난수를 생성하고' ! RANDOM! * 6/32768 + 1'에서 1과 6 사이와'! RANDOM! * 7/32768 + 1' - 1과 7. 그래서'rand_h'는 내게 과장된 것처럼 보입니다. 이것은 매우 복잡합니다 ...) X와 Y (X npocmaka