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


답변:


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

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

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

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

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

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

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

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


SQL Server Express에서 수행하는 방법은 무엇입니까? 에이전트는 고급 서비스가 포함 된 SQL Server Express와 함께 제공됩니까? '
Bilal Fazlani 2013 년

6
로그온하는 사람에 따라 SQL Server 에이전트 노드를 전혀 볼 수 없을 수도 있습니다. 모든 사람이 sa로 로그온하는 것은 아닙니다. 더 자세한 정보는 여기에 있습니다. msdn.microsoft.com/en-us/library/ms188283.aspx
Fetchez la vache 2013

SQL Server 에이전트 노드가 "Agent XPs disabled"레이블로 확장 할 수없는 경우 다음 코드를 실행하십시오. sp_configure 'show advanced options', 1; 재구성으로 이동하십시오. GO sp_configure '에이전트 XP', 1; GO RECONFIGURE GO 설명은 다음 링크 아래에 있습니다. msdn.microsoft.com/en-us/library/ms178127.aspx
Barry Guvenkaya

4
아마 스크립트 BAT는, CMD는, 파워 쉘은 그것을 위해 사용하는 프로그래밍
Kiquenet

115

수락 된 답변의 단계를 애니메이션 GIF로 만들었습니다. 이것은 MSSQL Server 2012에서 가져온 것입니다.

SQL 작업 예약


8
GIF-얼마나 창의적인가! :)
Zeek2

9
이것은 stackoverflow에서 가장 찬성 된 답변이어야합니다.!
Goutham Anush

1
sa로 로그인해야합니까? 나는 sa로 로그인하지 않았고 SQL 서버 에이전트를 보지 못했습니다. 나는 그것을 볼 권리가 충분하지 않다고 생각합니다.
Alper

1
메뉴 트리에서 SQL Server 에이전트 영역을 보려면 로그인 한 사용자에게 MSDB 데이터베이스에 대한 올바른 권한이 필요합니다 (MSDB는 SSMS가 권한과 같은 용도로 사용하는 기본 제공 데이터베이스입니다). 메인 트리 탐색기에서 보안> 로그인> 사용자 이름> 마우스 오른쪽 버튼 클릭> 속성> 사용자 매핑> msdb 확인> 아래에서 확인 SQLAgentOperatorRole
S.Mason

18

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

2
대박. 정확히 내가 필요한 것. 감사합니다 :)
AJ.

9

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 ;

-1

다음은 샘플 코드입니다.

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

21
대답에 코드에 대한 설명을 추가하는 것은 일반적으로 좋은 생각입니다 (분명하더라도).
Nathan Hughes

이 답변에는 충분한 설명이 포함되어 있지 않습니다. 충분한 설명이 없으면 독자는이 답변을 이해할 수 없습니다.
Jino Shaji

-2

매일 백업하려면 // 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"

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

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

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.