[sql] SQL 쿼리가 매일 실행되도록 작업을 예약하는 방법은 무엇입니까?

최소 필수 구성 설정으로 SQL Server 에이전트 작업을 사용하여 SQL 쿼리를 매일 실행하는 방법을 알고 싶습니다.



답변

  1. SQL Server 에이전트 노드를 확장하고 SQL Server 에이전트에서 작업 노드를 마우스 오른쪽 단추로 클릭하고 'New Job'

  2. 에서 'New Job'윈도우 작업의 이름과에 대한 설명을 입력 'General'탭을 선택합니다.

  3. 'Steps'창의 왼쪽에서 선택 'New'하고 하단을 클릭 합니다.

  4. 에서 'Steps'윈도우 단계 이름을 입력하고 쿼리에 대해 실행 할 데이터베이스를 선택합니다.

  5. 실행할 T-SQL 명령을 명령 창에 붙여넣고을 클릭 'OK'합니다.

  6. 'Schedule'새 작업 창 왼쪽 에있는 메뉴를 클릭 하고 일정 정보 (예 : 매일 및 시간)를 입력합니다.

  7. 클릭 'OK'-그게 다야.

(물론 추가 할 수있는 다른 옵션이 있지만 작업을 설정하고 예약하는 데 필요한 최소한의 옵션이라고 말하고 싶습니다.)


답변

수락 된 답변의 단계를 애니메이션 GIF로 만들었습니다. 이것은 MSSQL 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 ;


답변

다음은 샘플 코드입니다.

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


답변

매일 백업하려면 // C : \ Users \ admin \ Desktop \ DBScript \ DBBackUpSQL.sql에있는 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

작업 스케줄러 열기

작업 생성-> Triggers탭 선택 선택 New.

버튼 매일 선택 라디오 버튼

클릭 Ok버튼

그런 다음 Action 새 선택 탭 하십시오.

버튼 프로그램 / 스크립트 텍스트 상자에 "C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE"-S ADMIN-PC -i "C:\Users\admin\Desktop\DBScript\DBBackUpSQL.sql"를 입력합니다 (파일 경로와 일치하는지 확인하고 시작-> 검색 상자에 큰 따옴표 경로를 입력하고 찾으면 클릭하고 백업이 있는지 확인합니다. )

-위의 경로는 insted 될 수 있습니다 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"

그런 다음 확인 버튼을 클릭하십시오

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

그것을 즐기십시오 ………….


답변