방법: 복제 에이전트 프로필 작업(복제 Transact-SQL 프로그래밍)
에이전트 프로필은 에이전트 작업이 만들어질 때 기본값을 정의하는 데 사용됩니다. 각 에이전트에는 기본 프로필이 있으며 미리 정의된 프로필이 추가된 에이전트도 있습니다. 복제 저장 프로시저를 사용하여 사용자 정의 프로필을 만들 수 있습니다. 에이전트 프로필에 대한 자세한 내용은 복제 에이전트 프로필을 참조하십시오.
[!참고]
미리 정의된 프로필은 수정하거나 삭제하면 안 됩니다. 에이전트 매개 변수 변경 내용은 다음에 에이전트를 시작할 때 적용됩니다. 에이전트가 계속 실행되면 에이전트를 중지한 후 다시 시작해야 합니다.
새 에이전트 프로필을 만들려면
배포자에서 sp_add_agent_profile(Transact-SQL)을 실행합니다. @name을 지정하고 @profile_type에 값 1을 지정한 후 @agent_type에 다음 값 중 하나를 지정합니다.
1 - 복제 스냅숏 에이전트
2 - 복제 로그 판독기 에이전트
3 - 복제 배포 에이전트
4 - 복제 병합 에이전트
9 - 복제 큐 판독기 에이전트
이 프로필이 해당 유형의 복제 에이전트에 대한 새 기본 프로필이 될 경우 @default에 값 1을 지정합니다. 새 프로필의 식별자는 @profile_id 출력 매개 변수를 통해 반환됩니다. 이 출력 매개 변수는 지정된 에이전트 유형의 기본 프로필을 기반으로 한 프로필 매개 변수 집합을 사용하여 새 프로필을 만듭니다.
새 프로필이 만들어진 후 기본 매개 변수를 추가, 제거 또는 수정하여 프로필을 사용자 지정합니다.
기존 에이전트 프로필을 수정하려면
배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다. @agent_type에 대해 다음 값 중 하나를 지정합니다.
1 - 복제 스냅숏 에이전트
2 - 복제 로그 판독기 에이전트
3 - 복제 배포 에이전트
4 - 복제 병합 에이전트
9 - 복제 큐 판독기 에이전트
이렇게 하면 지정된 에이전트 유형에 대해 모든 이벤트가 반환됩니다. 변경할 프로필의 결과 집합에 있는 profile_id 값을 확인합니다.
배포자에서 sp_help_agent_parameter(Transact-SQL)를 실행합니다. @profile_id에 1단계에서 얻은 프로필 식별자를 지정합니다. 그러면 해당 프로필의 모든 매개 변수가 반환됩니다. 프로필에서 수정하거나 제거할 매개 변수의 이름을 확인합니다.
프로필의 매개 변수 값을 변경하려면 sp_change_agent_profile(Transact-SQL)을 실행합니다. @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @property에 변경할 매개 변수의 이름을 지정한 후 @value에 매개 변수의 새 값을 지정합니다.
[!참고]
기존 에이전트 프로필은 에이전트의 기본 프로필이 되도록 변경할 수 없습니다. 대신 이전 절차에서와 같이 새 프로필을 기본 프로필로 만들어야 합니다.
프로필에서 매개 변수를 제거하려면 sp_drop_agent_parameter(Transact-SQL)를 실행합니다. @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @parameter_name에 제거할 매개 변수의 이름을 지정합니다.
프로필에 새 매개 변수를 추가하려면 다음을 수행해야 합니다.
배포자에서 MSagentparameterlist(Transact-SQL) 테이블을 쿼리하여 각 에이전트 유형에 설정할 수 있는 프로필 매개 변수를 확인합니다.
배포자에서 sp_add_agent_parameter(Transact-SQL)를 실행합니다. @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @parameter_name에 추가할 유효한 매개 변수의 이름을 지정한 후 @parameter_value에 매개 변수의 값을 지정합니다.
에이전트 프로필을 제거하려면
배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다. @agent_type에 대해 다음 값 중 하나를 지정합니다.
1 - 복제 스냅숏 에이전트
2 - 복제 로그 판독기 에이전트
3 - 복제 배포 에이전트
4 - 복제 병합 에이전트
9 - 복제 큐 판독기 에이전트
이렇게 하면 지정된 에이전트 유형에 대해 모든 이벤트가 반환됩니다. 제거할 프로필의 결과 집합에 있는 profile_id 값을 확인합니다.
배포자에서 sp_drop_agent_profile(Transact-SQL)을 실행합니다. @profile_id에 1단계에서 얻은 프로필 식별자를 지정합니다.
동기화 중 에이전트 프로필을 사용하려면
배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다. @agent_type에 대해 다음 값 중 하나를 지정합니다.
1 - 복제 스냅숏 에이전트
2 - 복제 로그 판독기 에이전트
3 - 복제 배포 에이전트
4 - 복제 병합 에이전트
9 - 복제 큐 판독기 에이전트
이렇게 하면 지정된 에이전트 유형에 대해 모든 이벤트가 반환됩니다. 사용할 프로필의 결과 집합에 있는 profile_name 값을 확인합니다.
에이전트가 에이전트 작업에서 시작되는 경우 에이전트를 시작하는 작업 단계를 수정하여 -ProfileName 명령줄 매개 변수 뒤에 1단계에서 얻은 profile_name의 값을 지정합니다. 자세한 내용은 방법: 복제 에이전트의 명령 프롬프트 매개 변수 보기 및 수정(SQL Server Management Studio)을 참조하십시오.
명령 프롬프트에서 에이전트를 시작하는 경우 -ProfileName 명령줄 매개 변수 뒤에 1단계에서 얻은 profile_name의 값을 지정합니다.
예
이 예제에서는 custom_merge라는 병합 에이전트의 사용자 지정 프로필을 만들고, -UploadReadChangesPerBatch 매개 변수의 값을 변경하고, 새 -ExchangeType 매개 변수를 추가하고, 만들어진 프로필에 대한 정보를 반환합니다.
DECLARE @profilename AS sysname;
DECLARE @profileid AS int;
SET @profilename = N'custom_merge';
-- Create a temporary table to hold the returned
-- Merge Agent profiles.
CREATE TABLE #profiles (
profile_id int,
profile_name sysname,
agent_type int,
[type] int,
description varchar(3000),
def_profile bit)
INSERT INTO #profiles (profile_id, profile_name,
agent_type, [type],description, def_profile)
EXEC sp_help_agent_profile @agent_type = 4;
SET @profileid = (SELECT profile_id FROM #profiles
WHERE profile_name = @profilename);
IF (@profileid IS NOT NULL)
BEGIN
EXEC sp_drop_agent_profile @profileid;
END
DROP TABLE #profiles
-- Add a new merge agent profile.
EXEC sp_add_agent_profile @profile_id = @profileid OUTPUT,
@profile_name = @profilename, @agent_type = 4,
@description = N'custom merge profile';
-- Change the value of uploadreadchangesperbatch in the profile.
EXEC sp_change_agent_parameter @profile_id = @profileid,
@parameter_name = N'-UploadReadChangesPerBatch', @parameter_value = 50;
-- Add a new parameter ExchangeType the profile.
EXEC sp_add_agent_parameter @profile_id = @profileid,
@parameter_name = N'-ExchangeType', @parameter_value = 1;
-- Verify the new profile.
EXEC sp_help_agent_parameter @profileid;
GO