작업 단계 만들기
작업 단계는 데이터베이스나 서버에서 작업이 수행하는 동작입니다. 모든 작업에는 작업 단계가 하나 이상 있어야 합니다. 작업 단계가 될 수 있는 항목은 다음과 같습니다.
- 실행 프로그램 및 운영 체제 명령
- 저장 프로시저와 확장 저장 프로시저를 포함한 Transact-SQL 문
- Microsoft ActiveX 스크립트
- 복제 작업
- Analysis Services 작업
- Integration Services 패키지
모든 작업 단계는 특정 보안 컨텍스트에서 실행됩니다. 작업 단계에서 프록시를 지정하면 해당 작업 단계는 프록시의 자격 증명 보안 컨텍스트에서 실행됩니다. 작업 단계에서 프록시를 지정하지 않으면 작업 단계는 SQL Server 에이전트 서비스 계정의 컨텍스트에서 실행됩니다. sysadmin 고정 서버 역할의 멤버만이 프록시를 명시적으로 지정하지 않는 작업을 만들 수 있습니다.
작업 단계는 특정 Microsoft Windows 사용자의 컨텍스트에서 실행되기 때문에 해당 사용자는 작업 단계를 실행하는 데 필요한 권한과 구성이 있어야 합니다. 예를 들어 드라이브 문자나 UNC(Universal Naming Convention) 경로가 필요한 작업을 만드는 경우 작업 단계는 작업을 테스트하는 동안 사용자의 Microsoft Windows 사용자 계정으로 실행됩니다. 그러나 해당 작업 단계의 Windows 사용자도 필요한 권한, 드라이브 문자 구성 또는 필요한 드라이브에 대한 액세스 권한이 있어야 합니다. 그렇지 않으면 작업 단계가 실패합니다. 이런 문제가 발생하지 않도록 각 작업 단계의 프록시에 작업 단계에서 수행하는 작업에 필요한 권한이 있는지 확인하십시오. 자세한 내용은 SQL Server의 보안 고려 사항을 참조하십시오.
작업 단계 로그
SQL Server 에이전트에서는 일부 작업 단계의 출력을 운영 체제 파일이나 msdb 데이터베이스의 sysjobstepslogs 테이블에 기록할 수 있습니다. 다음은 두 대상에 모두 출력을 기록할 수 있는 작업 단계 유형입니다.
- 실행 프로그램 및 운영 체제 명령
- Transact-SQL 문
- Analysis Services 작업
sysadmin 고정 서버 역할의 멤버인 사용자가 실행한 작업 단계만 작업 단계 출력을 운영 체제 파일에 기록할 수 있습니다. msdb 데이터베이스에서 SQLAgentUserRole, SQLAgentReaderRole 또는 SQLAgentOperatorRole 고정 데이터베이스 역할의 멤버인 사용자가 작업 단계를 실행할 경우 이러한 작업 단계의 출력은 sysjobstepslogs 테이블에만 기록할 수 있습니다.
작업이나 작업 단계가 삭제되면 자동으로 작업 단계 로그가 삭제됩니다.
[!참고] 복제 작업과 Integration Services 패키지 작업 단계 로깅은 해당 하위 시스템에서 처리됩니다. SQL Server 에이전트를 사용하여 이러한 유형의 작업 단계에 대한 작업 단계 로깅을 구성할 수 없습니다.
실행 프로그램 및 운영 체제 명령을 작업 단계로 사용
실행 프로그램과 운영 체제 명령을 작업 단계로 사용할 수 있습니다. 이러한 파일의 확장명은 .bat, .cmd, .com 또는 .exe입니다.
실행 프로그램이나 운영 체제 명령을 작업 단계로 사용할 경우에는 다음을 지정해야 합니다.
명령이 성공한 경우 반환되는 프로세스 종료 코드를 지정합니다.
실행할 명령을 지정합니다. 운영 체제 명령을 실행하려면 명령 자체를 지정하면 되고 외부 프로그램을 실행하려면 프로그램 이름과 프로그램 인수를 지정합니다. 예를 들면 다음과 같습니다. C:\Program Files\Microsoft SQL Server\90\Tools\Binn\sqlcmd.exe -e -q "sp_who"
[!참고] 실행 파일이 시스템 경로나 작업 단계가 실행되는 계정의 사용자 경로에 지정된 디렉터리에 있지 않은 경우 실행 파일의 전체 경로를 지정해야 합니다.
실행 프로그램으로 작업 단계를 만들려면
SQL Server 에이전트 권한을 다시 설정하려면
Transact-SQL 작업 단계
Transact-SQL 작업 단계를 만들 때는 다음을 수행해야 합니다.
- 작업을 실행하는 데이터베이스를 확인합니다.
- 실행할 Transact-SQL 문을 입력합니다. 이 문에서 저장 프로시저나 확장 저장 프로시저를 호출할 수 있습니다.
필요에 따라 기존의 Transact-SQL 파일을 작업 단계에 대한 명령으로 열 수 있습니다.
Transact-SQL 작업 단계에서는 SQL Server 에이전트 프록시를 사용하지 않습니다. 대신에 작업 단계가 작업 단계 소유자의 계정으로 실행되거나 작업 단계 소유자가 sysadmin 고정 서버 역할의 멤버인 경우 SQL Server 에이전트 서비스 계정으로 실행됩니다. sysadmin 고정 서버 역할의 멤버는 sp_add_jobstep 저장 프로시저의 database_user_name 매개 변수를 사용하여 Transact-SQL 작업 단계가 다른 사용자의 컨텍스트에서 실행되도록 지정할 수도 있습니다. 자세한 내용은 sp_add_jobstep(Transact-SQL)을 참조하십시오.
[!참고] 단일 Transact-SQL 작업 단계에 일괄 처리가 여러 개 포함될 수 있습니다. Transact-SQL 작업 단계에는 포함된 GO 명령이 있을 수 있습니다.
Transact-SQL 작업 단계를 만들려면
Transact-SQL 작업 단계 옵션을 정의하려면
ActiveX 스크립팅 작업 단계
ActiveX 스크립팅 작업 단계를 만들 때는 다음을 수행해야 합니다.
- 작업 단계를 작성하는 스크립트 언어를 확인합니다.
- ActiveX 스크립트를 작성합니다.
기존 ActiveX 스크립트 파일을 작업 단계에 대한 명령으로 열 수도 있습니다. 또한 Microsoft Visual Basic 등을 사용하여 ActiveX 스크립트 명령을 외부에서 컴파일한 다음 실행 프로그램으로 실행할 수 있습니다.
작업 단계 명령이 ActiveX 스크립트이면 SQLActiveScriptHost 개체를 사용하여 출력을 작업 단계 기록 로그로 인쇄하거나 COM 개체를 만들 수 있습니다. SQLActiveScriptHost는 SQL Server 에이전트 호스팅 시스템에서 스크립트 네임스페이스로 도입되는 전역 개체입니다. 이 개체에는 두 가지 메서드(Print 및 CreateObject)가 있습니다. 다음 예에서는 VBScript(Visual Basic Scripting Edition)에서 ActiveX 스크립팅이 작동하는 방식을 보여 줍니다.
' VBScript example for ActiveX Scripting job step
Sub main()
' Create a Smo.Server object. The object connects to the
' server on which the script is running.
Set SmoServer = _
CreateObject ("Microsoft.SqlServer.Management.Smo.Server")
' Check the number of active connections for AdventureWorks.
ConnectionCount = _
SmoServer.GetActiveDbConnectionCount("AdventureWorks")
' If there are active connections, close the connections.
If ConnectionCount > 0 Then
' Log in the job history that this job step dropped
' connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks." + crLf )
' Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks")
End If
End Sub
다음 예에서는 JScript에서의 동일한 작업을 보여 줍니다.
// JScript example for ActiveX job step
function main() {
// Create a Smo.Server object. The object connects to the
// server on which the script is running.
var SmoServer =
CreateObject("Microsoft.SqlServer.Management.Smo.Server");
// Check the number of active connections for AdventureWorks.
var ConnectionCount =
SmoServer.GetActiveDbConnectionCount("AdventureWorks");
// If there are active connections, close the connections.
if (ConnectionCount > 0) {
// Log in the job history that this job step dropped
// connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks.\n");
// Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks");
}
}
ActiveX 스크립트 작업 단계를 만들려면
복제 작업 단계
복제를 사용하여 게시와 구독을 만드는 경우 기본적으로 복제 작업이 만들어집니다. 만들어지는 작업 유형은 복제 유형(스냅숏, 트랜잭션 또는 병합)과 사용되는 옵션에 따라 결정됩니다.
복제 작업 단계는 다음 복제 에이전트 중 하나를 활성화합니다.
- 스냅숏 에이전트(Snapshot 작업)
- 로그 판독기 에이전트(LogReader 작업)
- 배포 에이전트(Distribution 작업)
- 병합 에이전트(Merge 작업)
- 큐 판독기 에이전트(QueueReader 작업)
복제를 설정할 때 복제 에이전트 실행 방법을 지정할 수 있습니다. SQL Server 에이전트 시작 후 복제 에이전트가 연속해서 실행되도록 하거나, 요청 시 실행하거나, 일정에 따라 실행하는 3가지 방법이 있습니다. 복제 에이전트에 대한 자세한 내용은 복제 에이전트 개요를 참조하십시오.
Analysis Services 작업 단계
SQL Server 에이전트는 명령 작업 단계와 쿼리 작업 단계라는 서로 다른 유형의 두 가지 Analysis Services 작업 단계를 지원합니다.
Analysis Services 명령 작업 단계
Analysis Services 명령 작업 단계를 만들 때는 다음을 수행해야 합니다.
- 작업 단계를 실행할 데이터베이스 OLAP 서버를 확인합니다.
- 실행할 문을 입력합니다. 이 문은 XML for Analysis Services Execute 메서드여야 하며 완전한 SOAP Envelope나 XML for Analysis Services Discover 메서드를 포함할 수 없습니다. SQL Server Management Studio에서는 완전한 SOAP Envelope와 Discover 메서드가 지원되지만 SQL Server 에이전트 작업 단계에서는 지원되지 않습니다.
XML for Analysis Services에 대한 자세한 내용은 XML for Analysis Overview (XMLA)를 참조하십시오.
Analysis Services 쿼리 작업 단계
Analysis Services 쿼리 작업 단계를 만들 때는 다음을 수행해야 합니다.
- 작업 단계를 실행할 데이터베이스 OLAP 서버를 확인합니다.
- 실행할 문을 입력합니다. 이 문은 MDX(Multidimensional Expressions) 쿼리여야 합니다.
MDX에 대한 자세한 내용은 MDX 쿼리 기본 사항(MDX)을 참조하십시오.
Integration Services 패키지
Integration Services 패키지 작업 단계를 만들 때는 다음을 수행해야 합니다.
- 패키지 원본을 확인합니다.
- 패키지 위치를 확인합니다.
- 패키지에 구성 파일이 필요한 경우 구성 파일을 확인합니다.
- 패키지에 명령 파일이 필요한 경우 명령 파일을 확인합니다.
- 패키지에 사용할 확인 옵션을 지정합니다. 예를 들어 패키지에 서명이나 특정 패키지 ID가 필요하도록 지정할 수 있습니다.
- 패키지의 데이터 원본을 확인합니다.
- 패키지의 로그 공급자를 확인합니다.
- 패키지를 실행하기 전에 설정할 변수와 값을 지정합니다.
- 실행 옵션을 확인합니다.
- 명령줄 옵션을 추가하거나 수정합니다.
Integration Services 패키지를 실행하는 작업 단계를 만드는 방법은 방법: SQL Server 에이전트 작업을 사용하여 패키지 실행을 참조하십시오.
참고 항목
개념
관련 자료
sysjobstepslogs(Transact-SQL)
sp_add_job(Transact-SQL)