최소 필수 구성 설정으로 SQL Server 에이전트 작업을 사용하여 SQL 쿼리를 매일 실행하는 방법을 알고 싶습니다.
답변
-
SQL Server 에이전트 노드를 확장하고 SQL Server 에이전트에서 작업 노드를 마우스 오른쪽 단추로 클릭하고
'New Job'
-
에서
'New Job'
윈도우 작업의 이름과에 대한 설명을 입력'General'
탭을 선택합니다. -
'Steps'
창의 왼쪽에서 선택'New'
하고 하단을 클릭 합니다. -
에서
'Steps'
윈도우 단계 이름을 입력하고 쿼리에 대해 실행 할 데이터베이스를 선택합니다. -
실행할 T-SQL 명령을 명령 창에 붙여넣고을 클릭
'OK'
합니다. -
'Schedule'
새 작업 창 왼쪽 에있는 메뉴를 클릭 하고 일정 정보 (예 : 매일 및 시간)를 입력합니다. -
클릭
'OK'
-그게 다야.
(물론 추가 할 수있는 다른 옵션이 있지만 작업을 설정하고 예약하는 데 필요한 최소한의 옵션이라고 말하고 싶습니다.)
답변
답변
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 사용 : 내 작업이 저장 프로 시저를 실행하고 있습니다. @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 ;
답변
다음은 샘플 코드입니다.
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"
그런 다음 확인 버튼을 클릭하십시오
스크립트는 매일 트리거 탭에서 선택한 시간에 실행됩니다.
그것을 즐기십시오 ………….