SQL Server 에이전트의 사용 - Amazon Relational Database Service

SQL Server 에이전트의 사용

Amazon RDS에서는 Microsoft SQL Server Enterprise Edition, Standard Edition 또는 Web Edition을 실행하는 DB 인스턴스에서 SQL Server 에이전트를 사용할 수 있습니다. SQL Server 에이전트는 예약된 관리 작업을 실행하는 Microsoft Windows 서비스입니다. SQL Server 에이전트를 사용하면 T-SQL 작업을 통해 인덱스를 리빌드하고, 손상 검사를 실행하고, SQL Server DB 인스턴스의 데이터를 집계할 수 있습니다.

SQL Server DB 인스턴스를 생성하면 마스터 사용자가 SQLAgentUserRole 역할에 등록됩니다.

SQL Server 에이전트는 특정 이벤트 발생 시, 혹은 필요에 따라 예약 작업을 실행할 수 있습니다. 자세한 내용은 Microsoft 설명서에서 SQL Server 에이전트를 참조하세요.

참고

DB 인스턴스의 유지 관리 및 백업 기간 중에는 작업 실행을 예약하지 마세요. AWS를 통해 시작되는 유지 관리 및 백업 프로세스에 의해 작업이 중단되거나 취소될 수 있습니다.

다중 AZ 배포에서 SQL Server 에이전트 작업은 작업 복제 기능이 켜져 있을 때 기본 호스트에서 보조 호스트로 복제됩니다. 자세한 정보는 SQL Server 에이전트 작업 복제 켜기을 참조하십시오.

다중 AZ 배포에서는 SQL Server 에이전트 작업이 100개로 제한됩니다. 한도를 늘려야 할 경우 AWS Support에 문의하여 할당량 증대를 요청하세요. [지원 센터(AWS Support Center)] 페이지를 열고 필요한 경우, 로그인한 다음 [사례 생성(Create Case)]을 선택합니다. Service Limit increase(서비스 한도 증가)를 선택합니다. 양식을 작성하고 제출합니다.

SQL Server Management Studio(SSMS)에서 SQL Server 에이전트의 개별 작업 기록을 보려면 Object Explorer를 열고 작업을 마우스 오른쪽 버튼으로 클릭한 다음 [기록 보기(View History)]를 선택합니다.

SQL Server 에이전트는 DB 인스턴스의 관리형 호스트에서 실행되므로 일부 작업이 지원되지 않습니다.

  • 예를 들어 ActiveX, Windows cmdshell 또는 Windows PowerShell을 사용하여 복제 작업이나 명령줄 스크립트를 실행하는 것은 지원되지 않습니다.

  • SQL Server 에이전트를 수동으로 시작, 중지 또는 다시 시작할 수 없습니다.

  • SQL Server 에이전트를 통한 이메일 알림은 DB 인스턴스에서 사용할 수 없습니다.

  • SQL Server 에이전트 알림 및 연산자는 지원되지 않습니다.

  • SQL Server 에이전트를 사용한 백업 생성은 지원되지 않습니다. DB 인스턴스를 백업하려면 Amazon RDS를 사용합니다.

SQL Server 에이전트 작업 복제 켜기

다음 저장 프로시저를 사용하여 SQL Server 에이전트 작업 복제를 켤 수 있습니다.

EXECUTE msdb.dbo.rds_set_system_database_sync_objects @object_types = 'SQLAgentJob';

Amazon RDS for SQL Server에서 지원하는 모든 SQL Server 버전에서 저장 프로시저를 실행할 수 있습니다. 다음 범주의 작업이 복제됩니다.

  • [분류되지 않음(로컬)]

  • [분류되지 않음(멀티 서버)]

  • [분류되지 않음]

  • 데이터 수집기

  • 데이터베이스 엔진 튜닝 관리자

  • 데이터베이스 유지 관리

  • 전체 텍스트

T-SQL 작업 단계를 사용하는 작업만 복제됩니다. SSIS(SQL Server Integration Services), SSRS(SQL Server Reporting Service), 복제 및 PowerShell과 같은 단계 유형이 있는 작업은 복제되지 않습니다. 데이터베이스 메일 및 서버 수준 객체를 사용하는 작업은 복제되지 않습니다.

다음 기능을 사용하면 복제가 켜져 있는지 확인할 수 있습니다.

SELECT * from msdb.dbo.rds_fn_get_system_database_sync_objects();

T-SQL 쿼리는 SQL Server 에이전트 작업이 복제되는 경우 다음을 반환합니다. 복제하지 않으면 object_class에 대해 아무 것도 반환하지 않습니다.


                    SQL Server 에이전트 작업이 복제 중입니다.

다음 함수를 사용하여 객체가 마지막으로 동기화된 시간을 찾을 수 있습니다.

SELECT * from msdb.dbo.rds_fn_server_object_last_sync_time();

예를 들어 SQL Server 에이전트 작업을 01:00에 수정한다고 가정합니다. 가장 최근에 동기화된 시간은 동기화가 수행되었음을 나타내는 01:00 이후일 것으로 예상합니다.


                    서버 객체가 마지막으로 동기화된 시간은 01:21:23이었습니다.

SQLAgentUser 역할에 사용자 추가

추가 로그인 또는 사용자의 SQL Server 에이전트 사용을 허용하려면 마스터 사용자로 로그인한 후 다음을 수행합니다.

  1. CREATE LOGIN 명령을 사용하여 다른 서버 수준 로그인을 생성합니다.

  2. msdb 명령을 사용하여 CREATE USER 사용자를 생성한 다음 이전 단계에서 생성한 로그인에 이 사용자를 연결합니다.

  3. SQLAgentUserRole 시스템 저장 프로시저를 사용하여 sp_addrolemember에 사용자를 추가합니다.

예를 들어 마스터 사용자 이름은 admin이며, 이름이 theirname이고 암호가 theirpassword인 사용자에게 SQL Server 에이전트에 대한 액세스 권한을 부여한다고 가정하겠습니다. 이 경우 다음 절차를 사용할 수 있습니다.

SQLAgentUser 역할에 사용자를 추가하려면

  1. 마스터 사용자로 로그인합니다.

  2. 다음 명령을 실행합니다:

    --Initially set context to master database USE [master]; GO --Create a server-level login named theirname with password theirpassword CREATE LOGIN [theirname] WITH PASSWORD = 'theirpassword'; GO --Set context to msdb database USE [msdb]; GO --Create a database user named theirname and link it to server-level login theirname CREATE USER [theirname] FOR LOGIN [theirname]; GO --Added database user theirname in msdb to SQLAgentUserRole in msdb EXEC sp_addrolemember [SQLAgentUserRole], [theirname];

SQL Server 에이전트 작업 삭제

sp_delete_job 저장 프로시저를 사용하여 Amazon RDS for Microsoft SQL Server의 SQL Server 에이전트 작업을 삭제합니다.

SSMS를 사용하여 SQL Server 에이전트 작업을 삭제할 수는 없습니다. 그렇게 하면 다음과 유사한 오류 메시지가 표시됩니다.

The EXECUTE permission was denied on the object 'xp_regread', database 'mssqlsystemresource', schema 'sys'.

RDS는 관리형 서비스이기 때문에 Windows 레지스트리에 액세스하는 프로시저의 실행을 제한합니다. SSMS를 사용하는 경우 SSMS는 RDS에 의해 권한이 부여되지 않은 프로세스(xp_regread)를 실행하려고 시도합니다.

참고

RDS for SQL Server에서는 동일한 로그인으로 생성된 SQL Server 에이전트 작업만 삭제할 수 있습니다.

SQL Server 에이전트 작업을 삭제하려면

  • 다음 T-SQL 문을 실행합니다.

    EXEC msdb..sp_delete_job @job_name = 'job_name';