기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
AWS SCT 확장 팩을 사용하여 Postgre에서 서버 에이전트를 에뮬레이션하는 방법 SQL SQL
SQL서버 에이전트는 SQL 서버 작업을 실행하는 Microsoft Windows 서비스입니다. SQL서버 에이전트는 일정에 따라, 특정 이벤트에 대한 응답으로 또는 필요에 따라 작업을 실행합니다. SQL서버 에이전트에 대한 자세한 내용은 Microsoft 기술 설명서를 참조하십시오
Postgre에는 SQL 서버 에이전트와 동등한 서비스가 SQL 없습니다. SQL서버 에이전트 기능을 에뮬레이션하기 위해 확장 팩을 AWS SCT 생성합니다. 이 확장 팩은 AWS Lambda Amazon을 사용합니다 CloudWatch. AWS Lambda 일정을 관리하고 작업을 실행하는 데 사용하는 인터페이스를 구현합니다. Amazon은 일정 규칙을 CloudWatch 유지합니다.
AWS Lambda Amazon은 JSON 매개변수를 CloudWatch 사용하여 상호 작용합니다. 이 JSON 파라미터의 구조는 다음과 같습니다.
{ "mode":
mode
, "parameters": {list of parameters
}, "callback":procedure name
}
이전 예제에서는
는 작업 mode
유형이며 작업 유형에 따라 달라지는 매개 변수 집합입니다. 또한 list of parameters
은 작업이 완료된 후 실행되는 프로시저의 이름입니다.procedure name
AWS SCT 는 하나의 Lambda 함수를 사용하여 작업을 제어하고 실행합니다. CloudWatch 규칙은 작업 실행을 시작하고 작업을 시작하는 데 필요한 정보를 제공합니다. CloudWatch 규칙이 트리거되면 규칙의 파라미터를 사용하여 Lambda 함수를 시작합니다.
프로시저를 호출하는 단순 작업을 생성하려면 다음 형식을 사용합니다.
{ "mode": "run_job", "parameters": { "vendor": "mysql", "cmd": "lambda_db.nightly_job" } }
여러 단계가 포함된 작업을 생성하려면 다음 형식을 사용합니다.
{ "mode": "run_job", "parameters": { "job_name": "Job1", "enabled": "true", "start_step_id": 1, "notify_level_email": [0|1|2|3], "notify_email": email, "delete_level": [0|1|2|3], "job_callback": "ProcCallBackJob(job_name, code, message)", "step_callback": "ProcCallBackStep(job_name, step_id, code, message)" }, "steps": [ { "id":1, "cmd": "ProcStep1", "cmdexec_success_code": 0, "on_success_action": [|2|3|4], "on_success_step_id": 1, "on_fail_action": 0, "on_fail_step_id": 0, "retry_attempts": number, "retry_interval": number }, { "id":2, "cmd": "ProcStep2", "cmdexec_success_code": 0, "on_success_action": [1|2|3|4], "on_success_step_id": 0, "on_fail_action": 0, "on_fail_step_id": 0, "retry_attempts": number, "retry_interval": number }, ... ] }
Postgre의 SQL 서버 에이전트 동작을 에뮬레이션하기 위해 AWS SCT 확장 팩은 다음 SQL 테이블과 프로시저도 생성합니다.
Postgre에서 서버 에이전트를 SQL 에뮬레이션하는 테이블 SQL
SQL서버 에이전트를 에뮬레이션하기 위해 확장 팩은 다음 표를 사용합니다.
- sysjobs
작업에 대한 정보를 저장합니다.
- sysjobsteps
작업의 단계에 대한 정보를 저장합니다.
- sysschedules
작업 예약에 대한 정보를 저장합니다.
- sysjobschedules
개별 작업의 예약 정보를 저장합니다.
- sysjobhistory
예약된 작업의 실행 관련 정보를 저장합니다.
Postgre에서 SQL 서버 에이전트를 에뮬레이션하는 절차 SQL
SQL서버 에이전트를 에뮬레이션하기 위해 확장 팩은 다음 절차를 사용합니다.
- sp_add_job
새 작업을 추가합니다.
- sp_add_jobstep
작업에 단계를 추가합니다.
- sp_add_schedule
Amazon에서 새 스케줄 규칙을 생성합니다 CloudWatch. 여러 작업에서 이 예약 일정을 사용할 수 있습니다.
- sp_attach_schedule
선택한 작업의 예약을 설정합니다.
- sp_add_jobschedule
CloudWatch Amazon에서 작업에 대한 스케줄 규칙을 생성하고 이 규칙의 대상을 설정합니다.
- sp_update_job
이전에 생성한 작업의 속성을 업데이트합니다.
- sp_update_jobstep
작업의 단계 속성을 업데이트합니다.
- sp_update_schedule
Amazon에서 스케줄 규칙의 속성을 CloudWatch 업데이트합니다.
- sp_update_jobschedule
지정된 작업의 예약 속성을 업데이트합니다.
- sp_delete_job
작업을 삭제합니다.
- sp_delete_jobstep
작업에서 작업 단계를 삭제합니다.
- sp_delete_schedule
일정을 삭제합니다.
- sp_delete_jobschedule
CloudWatchAmazon에서 지정된 작업에 대한 스케줄 규칙을 삭제합니다.
- sp_detach_schedule
예약과 작업 간의 연결을 제거합니다.
- get_jobs, update_job
와 AWS Elastic Beanstalk상호 작용하는 내부 절차.
- sp_verify_job_date, sp_verify_job_time, sp_verify_job, sp_verify_jobstep, sp_verify_schedule, sp_verify_job_identifiers, sp_verify_schedule_identifiers
설정을 확인하는 내부 프로시저입니다.
Postgre에서 SQL 서버 에이전트를 에뮬레이션하는 프로시저의 구문 SQL
확장 팩의 aws_sqlserver_ext.sp_add_job
프로시저는 msdb.dbo.sp_add_job
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_name varchar, par_enabled smallint = 1, par_description varchar = NULL::character varying, par_start_step_id integer = 1, par_category_name varchar = NULL::character varying, par_category_id integer = NULL::integer, par_owner_login_name varchar = NULL::character varying, par_notify_level_eventlog integer = 2, par_notify_level_email integer = 0, par_notify_level_netsend integer = 0, par_notify_level_page integer = 0, par_notify_email_operator_name varchar = NULL::character varying, par_notify_netsend_operator_name varchar = NULL::character varying, par_notify_page_operator_name varchar = NULL::character varying, par_delete_level integer = 0, inout par_job_id integer = NULL::integer, par_originating_server varchar = NULL::character varying, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_add_jobstep
프로시저는 msdb.dbo.sp_add_jobstep
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_step_id integer = NULL::integer, par_step_name varchar = NULL::character varying, par_subsystem varchar = 'TSQL'::bpchar, par_command text = NULL::text, par_additional_parameters text = NULL::text, par_cmdexec_success_code integer = 0, par_on_success_action smallint = 1, par_on_success_step_id integer = 0, par_on_fail_action smallint = 2, par_on_fail_step_id integer = 0, par_server varchar = NULL::character varying, par_database_name varchar = NULL::character varying, par_database_user_name varchar = NULL::character varying, par_retry_attempts integer = 0, par_retry_interval integer = 0, par_os_run_priority integer = 0, par_output_file_name varchar = NULL::character varying, par_flags integer = 0, par_proxy_id integer = NULL::integer, par_proxy_name varchar = NULL::character varying, inout par_step_uid char = NULL::bpchar, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_add_schedule
프로시저는 msdb.dbo.sp_add_schedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_schedule_name varchar, par_enabled smallint = 1, par_freq_type integer = 0, par_freq_interval integer = 0, par_freq_subday_type integer = 0, par_freq_subday_interval integer = 0, par_freq_relative_interval integer = 0, par_freq_recurrence_factor integer = 0, par_active_start_date integer = NULL::integer, par_active_end_date integer = 99991231, par_active_start_time integer = 0, par_active_end_time integer = 235959, par_owner_login_name varchar = NULL::character varying, *inout par_schedule_uid char = NULL::bpchar,* inout par_schedule_id integer = NULL::integer, par_originating_server varchar = NULL::character varying, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_attach_schedule
프로시저는 msdb.dbo.sp_attach_schedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_schedule_id integer = NULL::integer, par_schedule_name varchar = NULL::character varying, par_automatic_post smallint = 1, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_add_jobschedule
프로시저는 msdb.dbo.sp_add_jobschedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_name varchar = NULL::character varying, par_enabled smallint = 1, par_freq_type integer = 1, par_freq_interval integer = 0, par_freq_subday_type integer = 0, par_freq_subday_interval integer = 0, par_freq_relative_interval integer = 0, par_freq_recurrence_factor integer = 0, par_active_start_date integer = NULL::integer, par_active_end_date integer = 99991231, par_active_start_time integer = 0, par_active_end_time integer = 235959, inout par_schedule_id integer = NULL::integer, par_automatic_post smallint = 1, inout par_schedule_uid char = NULL::bpchar, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_delete_job
프로시저는 msdb.dbo.sp_delete_job
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_originating_server varchar = NULL::character varying, par_delete_history smallint = 1, par_delete_unused_schedule smallint = 1, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_delete_jobstep
프로시저는 msdb.dbo.sp_delete_jobstep
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_step_id integer = NULL::integer, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_delete_jobschedule
프로시저는 msdb.dbo.sp_delete_jobschedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_name varchar = NULL::character varying, par_keep_schedule integer = 0, par_automatic_post smallint = 1, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_delete_schedule
프로시저는 msdb.dbo.sp_delete_schedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_schedule_id integer = NULL::integer, par_schedule_name varchar = NULL::character varying, par_force_delete smallint = 0, par_automatic_post smallint = 1, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_detach_schedule
프로시저는 msdb.dbo.sp_detach_schedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer, par_job_name varchar = NULL::character varying, par_schedule_id integer = NULL::integer, par_schedule_name varchar = NULL::character varying, par_delete_unused_schedule smallint = 0, par_automatic_post smallint = 1, out returncode integer
확장 팩의 aws_sqlserver_ext.sp_update_job
프로시저는 msdb.dbo.sp_update_job
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer par_job_name varchar = NULL::character varying par_new_name varchar = NULL::character varying par_enabled smallint = NULL::smallint par_description varchar = NULL::character varying par_start_step_id integer = NULL::integer par_category_name varchar = NULL::character varying par_owner_login_name varchar = NULL::character varying par_notify_level_eventlog integer = NULL::integer par_notify_level_email integer = NULL::integer par_notify_level_netsend integer = NULL::integer par_notify_level_page integer = NULL::integer par_notify_email_operator_name varchar = NULL::character varying par_notify_netsend_operator_name varchar = NULL::character varying par_notify_page_operator_name varchar = NULL::character varying par_delete_level integer = NULL::integer par_automatic_post smallint = 1 out returncode integer
확장 팩의 aws_sqlserver_ext.sp_update_jobschedule
프로시저는 msdb.dbo.sp_update_jobschedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer par_job_name varchar = NULL::character varying par_name varchar = NULL::character varying par_new_name varchar = NULL::character varying par_enabled smallint = NULL::smallint par_freq_type integer = NULL::integer par_freq_interval integer = NULL::integer par_freq_subday_type integer = NULL::integer par_freq_subday_interval integer = NULL::integer par_freq_relative_interval integer = NULL::integer par_freq_recurrence_factor integer = NULL::integer par_active_start_date integer = NULL::integer par_active_end_date integer = NULL::integer par_active_start_time integer = NULL::integer par_active_end_time integer = NULL::integer par_automatic_post smallint = 1 out returncode integer
확장 팩의 aws_sqlserver_ext.sp_update_jobstep
프로시저는 msdb.dbo.sp_update_jobstep
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_job_id integer = NULL::integer par_job_name varchar = NULL::character varying par_step_id integer = NULL::integer par_step_name varchar = NULL::character varying par_subsystem varchar = NULL::character varying par_command text = NULL::text par_additional_parameters text = NULL::text par_cmdexec_success_code integer = NULL::integer par_on_success_action smallint = NULL::smallint par_on_success_step_id integer = NULL::integer par_on_fail_action smallint = NULL::smallint par_on_fail_step_id integer = NULL::integer par_server varchar = NULL::character varying par_database_name varchar = NULL::character varying par_database_user_name varchar = NULL::character varying par_retry_attempts integer = NULL::integer par_retry_interval integer = NULL::integer par_os_run_priority integer = NULL::integer par_output_file_name varchar = NULL::character varying par_flags integer = NULL::integer par_proxy_id integer = NULL::integer par_proxy_name varchar = NULL::character varying out returncode integer
확장 팩의 aws_sqlserver_ext.sp_update_schedule
프로시저는 msdb.dbo.sp_update_schedule
프로시저를 에뮬레이션합니다. 소스 SQL 서버 에이전트 절차에 대한 자세한 내용은 Microsoft 기술 설명서를
par_schedule_id integer = NULL::integer par_name varchar = NULL::character varying par_new_name varchar = NULL::character varying par_enabled smallint = NULL::smallint par_freq_type integer = NULL::integer par_freq_interval integer = NULL::integer par_freq_subday_type integer = NULL::integer par_freq_subday_interval integer = NULL::integer par_freq_relative_interval integer = NULL::integer par_freq_recurrence_factor integer = NULL::integer par_active_start_date integer = NULL::integer par_active_end_date integer = NULL::integer par_active_start_time integer = NULL::integer par_active_end_time integer = NULL::integer par_owner_login_name varchar = NULL::character varying par_automatic_post smallint = 1 out returncode integer
Postgre에서 SQL 서버 에이전트를 에뮬레이션하는 프로시저를 사용하는 예 SQL
새 작업을 추가하려면 다음과 같이 aws_sqlserver_ext.sp_add_job
프로시저를 사용합니다.
SELECT * FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_job', par_enabled := 1::smallint, par_start_step_id := 1::integer, par_category_name := '[Uncategorized (Local)]', par_owner_login_name := 'sa');
새 작업 단계를 추가하려면 다음과 같이 aws_sqlserver_ext.sp_add_jobstep
프로시저를 사용합니다.
SELECT * FROM aws_sqlserver_ext.sp_add_jobstep ( par_job_name := 'test_job', par_step_id := 1::smallint, par_step_name := 'test_job_step1', par_subsystem := 'TSQL', par_command := 'EXECUTE [dbo].[PROC_TEST_JOB_STEP1];', par_server := NULL, par_database_name := 'GOLD_TEST_SS');
단순 일정을 추가하려면 다음과 같이 aws_sqlserver_ext.sp_add_schedule
프로시저를 사용합니다.
SELECT * FROM aws_sqlserver_ext.sp_add_schedule( par_schedule_name := 'RunOnce', par_freq_type := 1, par_active_start_time := 233000);
작업 일정을 설정하려면 다음과 같이 aws_sqlserver_ext.sp_attach_schedule
프로시저를 사용합니다.
SELECT * FROM aws_sqlserver_ext.sp_attach_schedule ( par_job_name := 'test_job', par_schedule_name := 'NightlyJobs');
작업에 대한 예약을 생성하려면 다음과 같이 aws_sqlserver_ext.sp_add_jobschedule
프로시저를 사용합니다.
SELECT * FROM aws_sqlserver_ext.sp_add_jobschedule ( par_job_name := 'test_job2', par_name := 'test_schedule2', par_enabled := 1::smallint, par_freq_type := 4, par_freq_interval := 1, par_freq_subday_type := 4, par_freq_subday_interval := 1, par_freq_relative_interval := 0, par_freq_recurrence_factor := 0, par_active_start_date := 20100801, par_active_end_date := 99991231, par_active_start_time := 0, par_active_end_time := 0);
Postgre에서 서버 에이전트를 SQL 에뮬레이션하기 위한 사용 사례 예제 SQL
소스 데이터베이스 코드에서 SQL 서버 에이전트를 사용하여 작업을 실행하는 경우 서버-Postgre SQL 확장 팩을 사용하여 이 SQL 코드를 Postgre로 AWS SCT 변환할 수 있습니다. SQL 확장 팩은 AWS Lambda 함수를 사용하여 서버 에이전트의 동작을 에뮬레이션합니다. SQL
새 AWS Lambda 함수를 만들거나 기존 함수를 등록할 수 있습니다.
새 AWS Lambda 함수를 만들려면
-
에서 AWS SCT대상 데이터베이스 트리에서 컨텍스트 메뉴 (마우스 오른쪽 버튼 클릭) 를 열고 확장 팩 적용을 선택한 다음 SQLPostgre를 선택합니다.
확장 팩 마법사가 표시됩니다.
-
SQL서버 에이전트 에뮬레이션 서비스 탭에서 다음을 수행하십시오.
-
AWS Lambda 함수 생성을 선택합니다.
-
Database login에 대상 데이터베이스 사용자의 이름을 입력합니다.
-
데이터베이스 암호에 이전 단계에서 입력한 사용자 이름의 암호를 입력합니다.
-
Python library folder에 Python 라이브러리 폴더의 경로를 입력합니다.
-
AWS Lambda 함수 생성을 선택한 후 다음을 선택합니다.
-
이전에 배포한 AWS Lambda 함수를 등록하려면
-
대상 데이터베이스에서 다음 스크립트를 실행합니다.
SELECT FROM aws_sqlserver_ext.set_service_setting( p_service := 'JOB', p_setting := 'LAMBDA_ARN', p_value :=
ARN
)이전 예제에서는
배포된 AWS Lambda 함수의 Amazon 리소스 이름 (ARN) 입니다.ARN
다음 예제에서는 한 단계로 구성된 단순 작업을 생성합니다. 이 작업은 5분마다 이전에 생성된 job_example
함수를 실행합니다. 이 함수는 job_example_table
테이블에 레코드를 삽입합니다.
이 단순 작업을 생성하려면
-
다음과 같이
aws_sqlserver_ext.sp_add_job
함수를 사용하여 작업을 생성합니다.SELECT FROM aws_sqlserver_ext.sp_add_job ( par_job_name := 'test_simple_job');
-
다음과 같이
aws_sqlserver_ext.sp_add_jobstep
함수를 사용하여 작업 단계를 생성합니다.SELECT FROM aws_sqlserver_ext.sp_add_jobstep ( par_job_name := 'test_simple_job', par_step_name := 'test_simple_job_step1', par_command := 'PERFORM job_simple_example;');
작업 단계는 함수가 수행하는 작업을 지정합니다.
-
다음과 같이
aws_sqlserver_ext.sp_add_jobschedule
함수를 사용하여 작업에 대한 스케줄러를 생성합니다.SELECT FROM aws_sqlserver_ext.sp_add_jobschedule ( par_job_name := 'test_simple_job', par_name := 'test_schedule', par_freq_type := 4, /* Daily */ par_freq_interval := 1, /* frequency_interval is unused */ par_freq_subday_type := 4, /* Minutes */ par_freq_subday_interval := 5 /* 5 minutes */);
작업 단계는 함수가 수행하는 작업을 지정합니다.
이 작업을 삭제하려면 다음과 같이 aws_sqlserver_ext.sp_delete_job
함수를 사용합니다.
PERFORM aws_sqlserver_ext.sp_delete_job( par_job_name := 'PeriodicJob1'::character varying, par_delete_history := 1::smallint, par_delete_unused_schedule := 1::smallint);