복제 에이전트 프로필 작업Work with Replication Agent Profiles

이 항목에서는 SQL Server 2017SQL Server 2017 , SQL Server Management StudioSQL Server Management Studio또는 RMO(복제 관리 개체)를 사용하여 Transact-SQLTransact-SQL에서 복제 에이전트 프로필로 작업하는 방법에 대해 설명합니다.This topic describes how to work with Replication Agent Profiles in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). 각 복제 에이전트의 동작은 에이전트 프로필을 통해 설정할 수 있는 매개 변수 집합으로 제어할 수 있습니다.The behavior of each replication agent is controlled by a set of parameters that can be set through agent profiles. 각 에이전트에는 기본 프로필이 있으며 일부 에이전트에는 미리 정의된 프로필이 추가되어 있습니다. 이러한 프로필은 에이전트에 대해 한 번에 하나만 활성화됩니다.Each agent has a default profile, and some have additional predefined profiles; at a given time, only one profile is active for an agent.

항목 내용In This Topic

SQL Server Management Studio 사용 Using SQL Server Management Studio

SQL Server Management Studio에서 에이전트 프로필 대화 상자에 액세스하려면 To access the Agent Profiles dialog box from SQL Server Management Studio

  1. 배포자 속성 - <Distributor>대화 상자의 일반 페이지에서 프로필 기본값을 클릭합니다.On the General page of the Distributor Properties - <Distributor> dialog box, click Profile Defaults.

복제 모니터에서 에이전트 프로필 대화 상자에 액세스하려면To access the Agent Profiles dialog box from Replication Monitor

  • 모든 에이전트에 대한 대화 상자를 열려면 게시자를 마우스 오른쪽 단추로 클릭한 다음 에이전트 프로필을 클릭합니다.To open the dialog box for all agents, right-click a Publisher, and then click Agent Profiles.

  • 단일 에이전트에 대한 대화 상자를 열려면 다음을 수행하세요.To open the dialog box for a single agent:

    1. 복제 모니터에서 왼쪽 창의 게시자 그룹을 확장하고 해당 게시자를 확장한 다음 해당 게시를 클릭합니다.Expand a Publisher group in the left pane of Replication Monitor, expand a Publisher, and then click a publication.

    2. 배포 에이전트 및 병합 에이전트 프로필의 경우 모든 구독 탭에서 구독을 마우스 오른쪽 단추로 클릭한 다음 에이전트 프로필을 클릭합니다.For Distribution Agent and Merge Agent profiles, right-click a subscription on the All Subscriptions tab, and then click Agent Profile. 다른 에이전트의 경우 에이전트 탭에서 에이전트를 마우스 오른쪽 단추로 클릭하고 에이전트 프로필을 클릭합니다.For other agents, right-click the agent on the Agents tab, and then click Agent Profile.

에이전트에 대해 프로필을 지정하려면 To specify a profile for an agent

  1. 에이전트 프로필 대화 상자에 둘 이상의 에이전트에 대한 프로필이 표시되면 에이전트를 선택합니다.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. 에이전트 프로필 표의 새 에이전트에 대한 기본값 열에서 프로필을 선택합니다.Select a profile in the Default for new column of the Agent profiles grid. 기본적으로 프로필은 새 게시 및 구독에 대한 에이전트에만 적용됩니다.By default, the profile is only applied to agents for new publications and subscriptions.

  3. 기존 게시 또는 구독에 대해 선택한 유형의 모든 에이전트에서 이 프로필을 사용하려면 기존 에이전트 변경을 클릭합니다.To specify that all agents of the selected type for existing publications or subscriptions should use this profile, click Change existing agents.

프로필과 연결된 매개 변수를 보고 편집하려면 To view and edit the parameters associated with a profile

  1. 에이전트 프로필 대화 상자에 둘 이상의 에이전트에 대한 프로필이 표시되면 에이전트를 선택합니다.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. 프로필 옆에 있는 속성 단추 (...)를 클릭합니다.Click the properties button () next to a profile.

  3. <ProfileName> 프로필 속성 대화 상자에서 매개 변수 및 값을 봅니다.View the parameters and values in the <ProfileName> Profile Properties dialog box.

    • 사용자 정의 프로필의 매개 변수는 편집할 수 있지만 미리 정의된 시스템 프로필의 매개 변수는 편집할 수 없습니다.Parameters in user-defined profiles can be edited; parameters in predefined system profiles cannot.

    • 에이전트에 대한 모든 매개 변수를 보려면 이 프로필에서 사용되는 매개 변수만 표시 확인란의 선택을 취소합니다.To view all parameters for an agent, clear the Show only parameters used in this profile check box. 에이전트 매개 변수에 대한 자세한 내용은 이 항목 끝에 있는 링크를 참조하세요.For information about agent parameters, see the links at the end of this topic.

  4. 닫기를 클릭합니다.Click Close.

사용자 정의 프로필을 만들려면 To create a user-defined profile

  1. 에이전트 프로필 대화 상자에 둘 이상의 에이전트에 대한 프로필이 표시되면 에이전트를 선택합니다.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. 새로 만들기를 클릭합니다.Click New.

  3. 새 에이전트 프로필 초기화 대화 상자에서 새 프로필의 기반으로 사용할 기존 프로필을 선택합니다.In the New Agent Profile initialization dialog box, select an existing profile on which to base the new profile.

  4. 새 에이전트 프로필 대화 상자에서 이름설명 입력란에 값을 입력합니다.In the New Agent Profile dialog box, enter values in the Name and Description text boxes.

  5. 매개 변수를 수정하여 프로필을 변경합니다.Modify parameters to tailor the profile. 에이전트에 대한 모든 매개 변수를 보려면 이 프로필에서 사용되는 매개 변수만 표시 확인란의 선택을 취소합니다.To view all parameters for an agent, clear the Show only parameters used in this profile check box. 에이전트 매개 변수에 대한 자세한 내용은 이 항목 끝에 있는 링크를 참조하세요.For information about agent parameters, see the links at the end of this topic.

  6. 확인을 클릭합니다.Click OK.

사용자 정의 프로필을 삭제하려면 To delete a user-defined profile

  1. 에이전트 프로필 대화 상자에 둘 이상의 에이전트에 대한 프로필이 표시되면 에이전트를 선택합니다.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. 프로필이 하나 이상의 에이전트와 연결되어 있으면 해당 에이전트의 프로필을 변경합니다.If a profile is associated with one or more agents, change the profile for those agents:

    1. 에이전트 프로필 표에서 다른 프로필을 선택합니다.Select a different profile in the Agent profiles grid.

    2. 기존 에이전트 변경을 클릭합니다.Click Change existing agents.

      참고

      이렇게 하면 삭제할 프로필을 사용하는 에이전트 외에 기존 게시 또는 구독에 대해 선택한 유형의 모든 에이전트에 대한 프로필까지 변경됩니다.This will change the profile for all agents of the selected type for existing publications or subscriptions, not only the ones using the profile you want to delete.

  3. 삭제할 프로필을 선택한 다음 삭제를 클릭합니다.Select the profile you want to delete, and then click Delete.

  4. 확인을 클릭합니다.Click OK.

Transact-SQL 사용 Using Transact-SQL

새 에이전트 프로필을 만들려면 To create a new agent profile

  1. 배포자에서 sp_add_agent_profile(Transact-SQL)을 실행합니다.At the Distributor, execute sp_add_agent_profile (Transact-SQL). 이때 @name, @profile_type1 값 및 @agent_type에 다음 값 중 하나를 지정합니다.Specify @name, a value of 1 for @profile_type, and one of the following values for @agent_type:

  2. 새 프로필이 만들어진 후 기본 매개 변수를 추가, 제거 또는 수정하여 프로필을 사용자 지정합니다.After the new profile has been created, add, remove, or modify the default parameters to customize the profile.

기존 에이전트 프로필을 수정하려면 To modify an existing agent profile

  1. 배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다.At the Distributor, execute sp_help_agent_profile (Transact-SQL). @agent_type에 다음 값 중 하나를 지정합니다.Specify one of the following values for @agent_type:

  2. 배포자에서 sp_help_agent_parameter(Transact-SQL)를 실행합니다.At the Distributor, execute sp_help_agent_parameter (Transact-SQL). @profile_id에 1단계에서 얻은 프로필 식별자를 지정합니다.Specify the profile identifier from step 1 for @profile_id. 그러면 해당 프로필의 모든 매개 변수가 반환됩니다.This returns all parameters for the profile. 프로필에서 수정하거나 제거할 매개 변수의 이름을 확인합니다.Note the name of any parameters to modify or remove from the profile.

  3. 프로필의 매개 변수 값을 변경하려면 sp_change_agent_profile(Transact-SQL)을 실행합니다.To change the value of a parameter in a profile, execute sp_change_agent_profile (Transact-SQL). @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @property에 변경할 매개 변수의 이름을 지정한 후 @value에 매개 변수의 새 값을 지정합니다.Specify the profile identifier from step 1 for @profile_id, the name of the parameter to change for @property, and a new value for the parameter for @value.

    참고

    기존 에이전트 프로필은 에이전트의 기본 프로필이 되도록 변경할 수 없습니다.You cannot change an existing agent profile to become the default profile for an agent. 대신 이전 절차에서와 같이 새 프로필을 기본 프로필로 만들어야 합니다.You must instead create a new profile as the default profile, as shown in the previous procedure.

  4. 프로필에서 매개 변수를 제거하려면 sp_drop_agent_parameter(Transact-SQL)를 실행합니다.To remove a parameter from a profile, execute sp_drop_agent_parameter (Transact-SQL). @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @parameter_name에 제거할 매개 변수의 이름을 지정합니다.Specify the profile identifier from step 1 for @profile_id and the name of the parameter to remove for @parameter_name.

  5. 프로필에 새 매개 변수를 추가하려면 다음을 수행해야 합니다.To add a new parameter to a profile, you must do the following:

    • 배포자에서 MSagentparameterlist(Transact-SQL) 테이블을 쿼리하여 각 에이전트 유형에 설정할 수 있는 프로필 매개 변수를 확인합니다.Query the MSagentparameterlist (Transact-SQL) table at the Distributor to determine which profile parameters can be set for each agent type.

    • 배포자에서 sp_add_agent_parameter(Transact-SQL)를 실행합니다.At the Distributor, execute sp_add_agent_parameter (Transact-SQL). @profile_id에 1단계에서 얻은 프로필 식별자를 지정하고 @parameter_name에 추가할 유효한 매개 변수의 이름을 지정한 후 @parameter_value에 매개 변수의 값을 지정합니다.Specify the profile identifier from step 1 for @profile_id, the name of a valid parameter to add for @parameter_name, and the value of the parameter for @parameter_value.

에이전트 프로필을 삭제하려면 To delete an agent profile

  1. 배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다.At the Distributor, execute sp_help_agent_profile (Transact-SQL). @agent_type에 다음 값 중 하나를 지정합니다.Specify one of the following values for @agent_type:

  2. 배포자에서 sp_drop_agent_profile(Transact-SQL)을 실행합니다.At the Distributor, execute sp_drop_agent_profile (Transact-SQL). @profile_id에 1단계에서 얻은 프로필 식별자를 지정합니다.Specify the profile identifier from step 1 for @profile_id.

동기화 중 에이전트 프로필을 사용하려면 To use agent profiles during synchronization

  1. 배포자에서 sp_help_agent_profile(Transact-SQL)을 실행합니다.At the Distributor, execute sp_help_agent_profile (Transact-SQL). @agent_type에 다음 값 중 하나를 지정합니다.Specify one of the following values for @agent_type:

  2. 에이전트가 에이전트 작업에서 시작되는 경우 에이전트를 시작하는 작업 단계를 수정하여 -ProfileName 명령줄 매개 변수 뒤에 1단계에서 얻은 profile_name 의 값을 지정합니다.If the agent is started from an agent job, edit the job step that starts the agent to specify the value of profile_name obtained in step 1 after the -ProfileName command-line parameter. 자세한 내용은 복제 에이전트의 명령 프롬프트 매개 변수 보기 및 수정(SQL Server Management Studio)을 참조하세요.For more information, see View and Modify Replication Agent Command Prompt Parameters (SQL Server Management Studio).

  3. 명령 프롬프트에서 에이전트를 시작하는 경우 -ProfileName 명령줄 매개 변수 뒤에 1단계에서 얻은 profile_name 의 값을 지정합니다.When starting the agent from the command prompt, specify the value of profile_name obtained in step 1 after the -ProfileName command-line parameter.

예(Transact-SQL) Example (Transact-SQL)

이 예제에서는 custom_merge라는 병합 에이전트의 사용자 지정 프로필을 만들고, -UploadReadChangesPerBatch 매개 변수의 값을 변경하고, 새 -ExchangeType 매개 변수를 추가하고, 만들어진 프로필에 대한 정보를 반환합니다.This example creates a custom profile for the Merge Agent named custom_merge, changes the value of the -UploadReadChangesPerBatch parameter, adds a new -ExchangeType parameter, and returns information on the profile that is created.

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
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

RMO 사용 Using RMO

새 에이전트 프로필을 만들려면 To create a new agent profile

  1. ServerConnection 클래스의 인스턴스를 사용하여 배포자에 대한 연결을 만듭니다.Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. AgentProfile 클래스의 인스턴스를 만듭니다.Create an instance of the AgentProfile class.

  3. 개체의 다음 속성을 설정합니다.Set the following properties on the object:

  4. Create 메서드를 호출하여 서버에 프로필을 만듭니다.Call the Create method to create the profile on the server.

  5. 서버에 프로필이 있으면 복제 에이전트 매개 변수의 값을 추가, 제거 또는 변경하여 프로필을 사용자 지정할 수 있습니다.Once the profile exists on the server, you can customize it by adding, removing, or changing the values of replication agent parameters.

  6. 기존 복제 에이전트 작업에 프로필을 할당하려면 AssignToAgent 메서드를 호출합니다.To assign the profile to an existing replication agent job, call the AssignToAgent method. distributionDBName 에 대한 배포 데이터베이스 이름 및 agentID에 대한 작업 ID를 전달합니다.Pass the name of the distribution database for distributionDBName and the ID of the job for agentID.

기존 에이전트 프로필을 수정하려면 To modify an existing agent profile

  1. ServerConnection 클래스의 인스턴스를 사용하여 배포자에 대한 연결을 만듭니다.Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. ReplicationServer 클래스의 인스턴스를 만듭니다.Create an instance of the ReplicationServer class. 1단계에서 만든 ServerConnection 개체를 전달합니다.Pass the ServerConnection object created in step 1.

  3. LoadProperties 메서드를 호출합니다.Call the LoadProperties method. 이 메서드가 false를 반환하는 경우 배포자가 있는지 확인합니다.If this method returns false, verify that the Distributor exists.

  4. EnumAgentProfiles 메서드를 호출합니다.Call the EnumAgentProfiles method. AgentType 값을 전달하여 반환되는 프로필의 범위를 특정 유형의 복제 에이전트로 좁힙니다.Pass an AgentType value to narrow down the returned profiles to a specific type of replication agent.

  5. 반환된 AgentProfile 에서 원하는 ArrayList개체를 가져옵니다. 이때 개체의 Name 속성은 프로필 이름과 일치합니다.Get the desired AgentProfile object from the returned ArrayList, where the Name property of the object matches the profile name.

  6. AgentProfile 의 다음 메서드 중 하나를 호출하여 프로필을 변경합니다.Call one of the following methods of AgentProfile to change the profile:

    • AddParameter - 프로필에 지원되는 매개 변수를 추가합니다. 여기서 name 은 복제 에이전트 매개 변수의 이름이고 value 는 지정된 값입니다.AddParameter - adds a supported parameter to the profile, where name is the name of the replication agent parameter and value is the specified value. 지정된 에이전트 유형에 대해 지원되는 모든 에이전트 매개 변수를 열거하려면 EnumParameterInfo 메서드를 호출합니다.To enumerate all supported agent parameters for a given agent type, call the EnumParameterInfo method. 이 메서드는 지원되는 모든 매개 변수를 나타내는 ArrayList 개체의 AgentProfileParameterInfo 를 반환합니다.This method returns an ArrayList of AgentProfileParameterInfo objects that represent all supported parameters.

    • RemoveParameter - 프로필에서 기존 매개 변수를 제거합니다. 여기서 name 은 복제 에이전트 매개 변수의 이름입니다.RemoveParameter - removes an existing parameter from the profile, where name is the name of the replication agent parameter. 프로필에 대해 정의된 현재의 모든 에이전트 매개 변수를 열거하려면 EnumParameters 메서드를 호출합니다.To enumerate all current agent parameters defined for the profile, call the EnumParameters method. 이 메서드는 이 프로필의 기존 매개 변수를 나타내는 ArrayList 개체의 AgentProfileParameter 를 반환합니다.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile.

    • ChangeParameter - 프로필의 기존 매개 변수 설정을 변경합니다. 여기서 name 은 에이전트 매개 변수의 이름이고 newValue 는 매개 변수를 변경할 값입니다.ChangeParameter - changes the setting of an existing parameter in the profile, where name is the name of the agent parameter and newValue is the value to which the parameter is being changed. 프로필에 대해 정의된 현재의 모든 에이전트 매개 변수를 열거하려면 EnumParameters 메서드를 호출합니다.To enumerate all current agent parameters defined for the profile, call the EnumParameters method. 이 메서드는 이 프로필의 기존 매개 변수를 나타내는 ArrayList 개체의 AgentProfileParameter 를 반환합니다.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile. 지원되는 모든 에이전트 매개 변수 설정을 열거하려면 EnumParameterInfo 메서드를 호출합니다.To enumerate all supported agent parameter settings, call the EnumParameterInfo method. 이 메서드는 모든 매개 변수에 대해 지원되는 값을 나타내는 ArrayList 개체의 AgentProfileParameterInfo 를 반환합니다.This method returns an ArrayList of AgentProfileParameterInfo objects that represent the supported values for all parameters.

에이전트 프로필을 삭제하려면 To delete an agent profile

  1. ServerConnection 클래스의 인스턴스를 사용하여 배포자에 대한 연결을 만듭니다.Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. AgentProfile 클래스의 인스턴스를 만듭니다.Create an instance of the AgentProfile class. Name 에 프로필 이름을 설정하고 ServerConnection 에 1단계에서 만든 ConnectionContext을 설정합니다.Set the name of the profile for Name and the ServerConnection from step 1 for ConnectionContext.

  3. LoadProperties 메서드를 호출합니다.Call the LoadProperties method. 이 메서드가 false를 반환하는 경우 지정한 이름이 올바르지 않거나 해당 프로필이 서버에 없는 것입니다.If this method returns false, either the specified name was incorrect or the profile does not exist on the server.

  4. Type 속성이 고객 프로필을 나타내는 User로 설정되어 있는지 확인합니다.Verify that the Type property is set to User, which indicates a customer profile. System 의 값이 Type인 프로필은 제거하면 안 됩니다.You should not remove a profile that has a value of System for Type.

  5. Remove 메서드를 호출하여 이 개체가 나타내는 사용자 정의 프로필을 서버에서 제거합니다.Call the Remove method to remove the user-defined profile represented by this object from the server.

후속 작업: 에이전트 매개 변수 변경 후 Follow Up: After Changing Agent Parameters

에이전트 매개 변수에 대한 변경 사항은 다음에 에이전트가 시작될 때 적용됩니다.Agent parameter changes take effect the next time the agent is started. 에이전트가 연속적으로 실행되는 경우에는 에이전트를 중단했다가 다시 시작해야 합니다.If the agent runs continuously, you must stop and restart the agent.

관련 항목:See Also

복제 에이전트 프로필 Replication Agent Profiles
Replication Snapshot Agent Replication Snapshot Agent
Replication Log Reader Agent Replication Log Reader Agent
Replication Distribution Agent Replication Distribution Agent
Replication Merge Agent Replication Merge Agent
Replication Queue Reader AgentReplication Queue Reader Agent