복붙노트

[SQL] SQL 쿼리가 매일 실행하는 방법 작업을 예약하려면?

SQL

SQL 쿼리가 매일 실행하는 방법 작업을 예약하려면?

나는 필요한 최소 구성 설정을 사용하여 SQL Server 에이전트 작업을 사용하여 매일 실행 SQL 쿼리를 만드는 방법을 알 필요가있다.

해결법

  1. ==============================

    1.(이 추가 할 수 물론 다른 옵션입니다 -하지만 나는 당신이 일을 설정하고 계획하는 데 필요한 최소한 말할 것이다)

    (이 추가 할 수 물론 다른 옵션입니다 -하지만 나는 당신이 일을 설정하고 계획하는 데 필요한 최소한 말할 것이다)

  2. ==============================

    2.내가 허용 대답의 단계의 애니메이션 GIF했다. 이 MSSQL 서버 2012입니다

    내가 허용 대답의 단계의 애니메이션 GIF했다. 이 MSSQL 서버 2012입니다

  3. ==============================

    3.T-SQL에서이 작업을 수행하려면, 당신은 매일 작업을 예약하려면 다음 시스템 저장 프로 시저를 사용할 수 있습니다. 매일 오전 1시이 예제 일정. 개인 저장 프로 시저 및 매개 변수의 유효 범위의 구문에 대한 자세한 내용은 Microsoft 도움말을 참조하십시오.

    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
    
  4. ==============================

    4.T-SQL을 사용 : 내 직업은 저장 프로 시저를 실행합니다. 당신은 쉽게 변경할 수 있습니다 @Command 당신의 SQL을 실행합니다.

    T-SQL을 사용 : 내 직업은 저장 프로 시저를 실행합니다. 당신은 쉽게 변경할 수 있습니다 @Command 당신의 SQL을 실행합니다.

    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 ;
    
  5. ==============================

    5.다음은 샘플 코드는 다음과 같습니다

    다음은 샘플 코드는 다음과 같습니다

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

    6.당신은 C에서 SQL 스크립트를 저장 다음 일일 백업 // 원하는 경우 : \ 사용자 \ 관리자 \ 바탕 화면 \ DBScript \ DBBackUpSQL.sql

    당신은 C에서 SQL 스크립트를 저장 다음 일일 백업 // 원하는 경우 : \ 사용자 \ 관리자 \ 바탕 화면 \ 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
    

    작업 스케줄러를 엽니 다

    트리거 탭을 선택 새로 만들기를 선택> task- 만듭니다.

    버튼을 선택 매일 라디오 버튼

    확인 버튼을 클릭합니다

    다음 작업 탭을 선택 새로 만들기를 클릭합니다.

    버튼을 넣어 "C : \ 프로그램 Files \ Microsoft SQL 서버 \ 100 개 \ 도구 \ BINN \ sqlcmd.exe를"-S ADMIN-PC -i "C : \ 사용자 \ 관리자 \ 바탕 화면 \ DBScript \ DBBackUpSQL.sql"프로그램에서 / 스크립트 텍스트 상자 (확인 파일의 경로와 일치하고 시작 -에 이중 인용 경로를 넣어> 상자를 검색하고 그 다음 검색을 클릭하고 볼 경우 백업이 있습니다 여부를 만든다)

    -S ADMIN-PC -i "C : \ 사용자 \ 관리자 \ 바탕 화면 \ DBScript : - 위의 경로는 100 쓰기 90"\ 프로그램 Files \ Microsoft SQL 서버 \ 90 \ 도구 \ BINN \ sqlcmd.exe를 C "insted 될 수 있습니다 \ DBBackUpSQL.sql "

    다음 확인 버튼을 클릭합니다

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

    그것을 즐길 .............

  7. from https://stackoverflow.com/questions/5471080/how-to-schedule-a-job-for-sql-query-to-run-daily by cc-by-sa and MIT license