Как работать с профилями агента репликации (программирование репликации на языке Transact-SQL)

Профили агента используются для определения значений по умолчанию, когда создается задание агента. Каждый агент имеет профиль по умолчанию, а некоторые агенты имеют и дополнительные стандартные профили. Можно создать пользовательские профили с помощью хранимых процедур репликации. Дополнительные сведения о профилях агентов см. в разделе Профили агента репликации.

ПримечаниеПримечание

Не следует удалять стандартные профили и вносить в них изменения. Изменения параметров агента вступают в действие при следующем запуске агента. Если агент выполняется в непрерывном режиме, следует остановить и перезапустить агент.

Создание нового профиля агента

  1. Выполните процедуру sp_add_agent_profile (Transact-SQL) на распространителе. Задайте @name, значение 1 для @profile_type и одно из следующих значений для @agent_type:

    Если этот профиль станет профилем по умолчанию для агента репликации данного типа, укажите значение 1 для @default. Идентификатор нового профиля можно получить с помощью выходного параметра @profile_id. Таким образом создается новый профиль с набором параметров профиля на основе профиля по умолчанию для данного типа агента.

  2. Когда новый профиль создан, для его настройки можно добавить, удалить или изменить параметры по умолчанию.

Изменение существующего профиля агента

  1. Выполните процедуру sp_help_agent_profile (Transact-SQL) на распространителе. В параметре @agent_type укажите одно из следующих значений:

    Будут получены все профили для указанного типа агента. Запомните значение profile_id в результирующем наборе для профиля, который требуется изменить.

  2. Выполните процедуру sp_help_agent_parameter (Transact-SQL) на распространителе. В параметре @profile_id укажите полученный на шаге 1 идентификатор. В результате будут возвращены все параметры для профиля. Запомните имена параметров профиля, которые требуется изменить или удалить.

  3. Чтобы изменить значение параметра в профиле, выполните процедуру sp_change_agent_profile (Transact-SQL). Укажите идентификатор профиля из шага 1 для @profile_id, имя изменяемого параметра в @property и новое значение параметра для @value.

    ПримечаниеПримечание

    Существующий профиль агента невозможно сделать профилем по умолчанию для агента. Профиль по умолчанию должен быть создан заново, как показано в предыдущей процедуре.

  4. Чтобы удалить параметр из профиля, выполните процедуру sp_drop_agent_parameter (Transact-SQL). Укажите идентификатор профиля из шага 1 для @profile_id и имя удаляемого параметра для @parameter_name.

  5. Чтобы добавить новый параметр в профиль, сделайте следующее:

    • Запросите таблицу MSagentparameterlist (Transact-SQL) на распространителе, чтобы определить, какие параметры профиля можно задать для каждого типа агента.

    • Выполните процедуру sp_add_agent_parameter (Transact-SQL) на распространителе. Укажите идентификатор профиля из шага 1 для @profile_id, имя правильного добавляемого параметра в @parameter_name и значение параметра для @parameter_value.

Удаление профиля агента

  1. Выполните процедуру sp_help_agent_profile (Transact-SQL) на распространителе. В параметре @agent_type укажите одно из следующих значений:

    Будут получены все профили для указанного типа агента. Запомните profile_id в результирующем наборе для удаляемого профиля.

  2. Выполните процедуру sp_drop_agent_profile (Transact-SQL) на распространителе. В параметре @profile_id укажите полученный на шаге 1 идентификатор.

Использование профилей агента при синхронизации

  1. Выполните процедуру sp_help_agent_profile (Transact-SQL) на распространителе. В параметре @agent_type укажите одно из следующих значений:

    Будут получены все профили для указанного типа агента. Запомните значение profile_name в результирующем наборе для профиля, который должен использоваться.

  2. Если агент запускается из задания агента, измените шаг запуска в этом задании, указав значение profile_name из шага 1 после параметра командной строки -ProfileName. Дополнительные сведения см. в разделе Как просмотреть и изменить параметры командной строки агента репликации (среда SQL Server Management Studio).

  3. Если агент запускается из командной строки, укажите значение profile_name из шага 1 после параметра командной строки -ProfileName.

Пример

В этом примере создается пользовательский профиль для агента слияния с именем 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