bestsource

SQL 쿼리를 매일 실행하도록 작업을 예약하려면 어떻게 해야 합니까?

bestsource 2023. 4. 24. 23:41
반응형

SQL 쿼리를 매일 실행하도록 작업을 예약하려면 어떻게 해야 합니까?

SQL Server 에이전트 작업을 사용하여 SQL 조회를 최소 필수 구성 설정으로 매일 실행하는 방법을 알아야 합니다.

  1. SQL Server 에이전트 노드를 확장하고 SQL Server 에이전트에서 작업 노드를 마우스 오른쪽 버튼으로 누르고'New Job'

  2. 에서'New Job'window에 작업 이름과 설명을 입력합니다.'General'탭을 클릭합니다.

  3. 선택한다.'Steps'창 왼쪽에 있는 를 클릭하여'New'아래쪽에 있습니다.

  4. 에서'Steps'window 스텝 이름을 입력하고 쿼리를 실행할 데이터베이스를 선택합니다.

  5. 실행할 T-SQL 명령어를 Command 창에 붙여넣고'OK'.

  6. 를 클릭합니다.'Schedule'[ New Job ]창 왼쪽에 있는 메뉴를 선택하고 스케줄 정보(예: 매일 및 시간)를 입력합니다.

  7. 클릭'OK'- 그게 다예요.

(물론 추가할 수 있는 다른 옵션도 있지만, 작업 셋업과 스케줄에 필요한 최소한의 옵션입니다.)

저는 접수된 답변의 스텝을 애니메이션 GIF로 만들었습니다.이것은 MSQL Server 2012의 것입니다.

SQL 작업 예약

t-sql에서 이를 수행하려면 다음 시스템 저장 프로시저를 사용하여 일일 작업을 예약할 수 있습니다.이 예에서는 매일 오전 1시에 스케줄을 설정합니다.개별 저장 프로시저의 구문과 유효한 파라미터 범위에 대한 자세한 내용은 Microsoft 도움말을 참조하십시오.

DECLARE @job_name NVARCHAR(128), @description NVARCHAR(512), @owner_login_name NVARCHAR(128), @database_name NVARCHAR(128);

SET @job_name = N'Some Title';
SET @description = N'Periodically do something';
SET @owner_login_name = N'login';
SET @database_name = N'Database_Name';

-- Delete job if it already exists:
IF EXISTS(SELECT job_id FROM msdb.dbo.sysjobs WHERE (name = @job_name))
BEGIN
    EXEC msdb.dbo.sp_delete_job
        @job_name = @job_name;
END

-- Create the job:
EXEC  msdb.dbo.sp_add_job
    @job_name=@job_name, 
    @enabled=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name;

-- Add server:
EXEC msdb.dbo.sp_add_jobserver @job_name=@job_name;

-- Add step to execute SQL:
EXEC msdb.dbo.sp_add_jobstep
    @job_name=@job_name,
    @step_name=N'Execute SQL', 
    @step_id=1, 
    @cmdexec_success_code=0, 
    @on_success_action=1, 
    @on_fail_action=2, 
    @retry_attempts=0, 
    @retry_interval=0, 
    @os_run_priority=0, 
    @subsystem=N'TSQL', 
    @command=N'EXEC my_stored_procedure; -- OR ANY SQL STATEMENT', 
    @database_name=@database_name, 
    @flags=0;

-- Update job to set start step:
EXEC msdb.dbo.sp_update_job
    @job_name=@job_name, 
    @enabled=1, 
    @start_step_id=1, 
    @notify_level_eventlog=0, 
    @notify_level_email=2, 
    @notify_level_netsend=2, 
    @notify_level_page=2, 
    @delete_level=0, 
    @description=@description, 
    @category_name=N'[Uncategorized (Local)]', 
    @owner_login_name=@owner_login_name, 
    @notify_email_operator_name=N'', 
    @notify_netsend_operator_name=N'', 
    @notify_page_operator_name=N'';

-- Schedule job:
EXEC msdb.dbo.sp_add_jobschedule
    @job_name=@job_name,
    @name=N'Daily',
    @enabled=1,
    @freq_type=4,
    @freq_interval=1, 
    @freq_subday_type=1, 
    @freq_subday_interval=0, 
    @freq_relative_interval=0, 
    @freq_recurrence_factor=1, 
    @active_start_date=20170101, --YYYYMMDD
    @active_end_date=99991231, --YYYYMMDD (this represents no end date)
    @active_start_time=010000, --HHMMSS
    @active_end_time=235959; --HHMMSS

T-SQL 사용: 저장 프로시저를 실행하는 작업입니다.쉽게 바꿀 수 있다@commandsql을 실행합니다.

EXEC msdb.dbo.sp_add_job  
   @job_name = N'MakeDailyJob',   
   @enabled = 1,   
   @description = N'Procedure execution every day' ; 

 EXEC msdb.dbo.sp_add_jobstep  
    @job_name = N'MakeDailyJob',   
    @step_name = N'Run Procedure',   
    @subsystem = N'TSQL',   
    @command = 'exec BackupFromConfig';

 EXEC msdb.dbo.sp_add_schedule  
    @schedule_name = N'Everyday schedule',   
    @freq_type = 4,  -- daily start
    @freq_interval = 1,
    @active_start_time = '230000' ;   -- start time 23:00:00

 EXEC msdb.dbo.sp_attach_schedule  
   @job_name = N'MakeDailyJob',  
   @schedule_name = N'Everyday schedule' ;

 EXEC msdb.dbo.sp_add_jobserver  
   @job_name = N'MakeDailyJob',  
   @server_name = @@servername ;

C의 SQL 스크립트스토어에 따라 매일 백업 //을 실행하는 경우:\Users\admin\데스크탑\DBScript \DBBackUpSQL.sql

DECLARE @pathName NVARCHAR(512),
 @databaseName NVARCHAR(512) SET @databaseName = 'Databasename' SET @pathName = 'C:\DBBackup\DBData\DBBackUp' + Convert(varchar(8), GETDATE(), 112) + '_' + Replace((Convert(varchar(8), GETDATE(), 108)),':','-')+ '.bak' BACKUP DATABASE @databaseName TO DISK = @pathName WITH NOFORMAT, 
INIT, 
NAME = N'', 
SKIP, 
NOREWIND, 
NOUNLOAD, 
STATS = 10 
GO

작업 스케줄러를 엽니다.

create task -> 선택Triggers탭 선택New.

Button Select Daily 라디오 버튼

찰칵찰칵Ok단추

그런 다음 을 클릭합니다.Action탭을 새로 선택합니다.

버튼 입력"C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S Admin-PC -i"C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"프로그램/스크립트 텍스트 상자([Match your files path]및 [Put the double quoted path in start-> search]박스를 확인하고 발견 시 클릭하면 백업이 있는지 여부를 확인합니다.)

-- 상기의 패스는, 100 write 90 으로 인스톨 할 수 있습니다."C:\Program Files\Microsoft SQL Server\90\Tools\Binn\SQLCMD.EXE" -S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"

[확인] 버튼을 클릭합니다.

매일 트리거 탭에서 선택한 시간에 스크립트가 실행됩니다.

즐기세요..........

다음은 샘플 코드입니다.

Exec sp_add_schedule
    @schedule_name = N'SchedulName' 
    @freq_type = 1
    @active_start_time = 08300

언급URL : https://stackoverflow.com/questions/5471080/how-can-i-schedule-a-job-to-run-a-sql-query-daily

반응형