Работа с профилями агента репликации

Область применения: SQL Server Управляемый экземпляр SQL Azure

В этом разделе описывается, как работать с профилями агента репликации в SQL Server с помощью SQL Server Management Studio, Transact-SQL или объектов управления репликацией (RMO). Поведение каждого агента репликации контролируется набором параметров, который может устанавливаться через профили агента. У каждого агента имеются профили по умолчанию, а некоторые агенты имеют дополнительные предопределенные профили. В каждый момент времени активен только один профиль.

В этом разделе

  • Для работы с профилями агента репликации используется:

    Среда SQL Server Management Studio

    • Доступ к диалоговому окну «Профили агентов»

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

    • Создание профиля

    • Изменение профиля

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

    Transact-SQL

    • Создание профиля

    • Изменение профиля

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

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

    • Пример (Transact-SQL)

    Объекты RMO

    • Создание профиля

    • Изменение профиля

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

  • Дальнейшие действия: После изменения параметров агента

Использование среды SQL Server Management Studio

Доступ к диалоговому окну «Профили агентов» из среды SQL Server Management Studio

  1. На странице "Общие" диалогового окна "Свойства распространителя - <распространитель>" щелкните "Профиль по умолчанию".

Доступ к диалоговому окну «Профили агентов» из монитора репликации

  • Чтобы открыть диалоговое окно для всех агентов, щелкните издатель правой кнопкой мыши, затем щелкните Профили агентов.

  • Чтобы открыть диалоговое окно для одного агента:

    1. На левой панели монитора репликации раскройте группу издателей, раскройте нужный издатель, а затем выберите публикацию.

    2. Для доступа к профилям агента распространителя и агента слияния щелкните правой кнопкой мыши подписку на вкладке Все подписки , затем щелкните Профиль агента. Для других агентов щелкните правой кнопкой мыши агент на вкладке Агенты и выберите Профиль агента.

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

  1. Если в окне Профили агентов отображаются профили нескольких агентов, следует выбрать агент.

  2. Выберите профиль в столбце По умолчанию для новых сетки Профили агентов . По умолчанию профиль применяется к агентам только для новых публикаций и подписок.

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

Просмотр и редактирование параметров, связанных с профилем

  1. Если в окне Профили агентов отображаются профили нескольких агентов, следует выбрать агент.

  2. Нажмите кнопку свойств (), следующую за профилем.

  3. Просмотрите параметры и значения в <диалоговом окне "Свойства профиля ProfileName>".

    • Параметры в пользовательских профилях могут редактироваться, параметры же в предопределенных системных профилях недоступны для изменения.

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

  4. Нажмите кнопку Закрыть.

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

  1. Если в окне Профили агентов отображаются профили нескольких агентов, следует выбрать агент.

  2. Нажмите кнопку Создать.

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

  4. В диалоговом окне Создать профиль агента введите значения в текстовые поля Имя и Описание .

  5. Чтобы настроить профиль, измените параметры. Для просмотра всех параметров агента снимите флажок Показывать только параметры, используемые в этом профиле . К дополнительным сведениям о параметрах агента можно перейти по ссылкам в конце этого раздела.

  6. Нажмите ОК.

Удаление пользовательского профиля

  1. Если в окне Профили агентов отображаются профили нескольких агентов, следует выбрать агент.

  2. Если профиль связан с одним или более агентом, измените профиль для этих агентов:

    1. Выберите другой профиль в сетке Профили агентов .

    2. Щелкните Изменить существующие агенты.

      Примечание.

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

  3. Выберите профиль, подлежащий удалению, затем нажмите кнопку Удалить.

  4. Нажмите ОК.

Использование 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_parameter (Transact-SQL). Укажите идентификатор профиля из шага 1 для @profile_id, имя параметра для @parameter_name и новое значение параметра для @parameter_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 .

Пример (Transact-SQL)

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

При помощи объектов RMO

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

  1. Создайте соединение с распространителем с помощью экземпляра класса ServerConnection .

  2. Создайте экземпляр класса AgentProfile.

  3. Установите следующие свойства объекта.

    • Name — имя профиля.

    • AgentType – значение AgentType , указывающее на тип агента репликации, для которого создается профиль.

    • ConnectionContext – значение ServerConnection , созданного на шаге 1.

    • Description – описание профиля (необязательно).

    • Default — установите для свойства значение true, если во всех новых заданиях агентов для AgentType этот профиль будет использоваться по умолчанию (необязательно).

  4. Вызовите метод Create для создания профиля на этом сервере.

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

  6. Назначение профиля для существующего задания агента репликации производится методом AssignToAgent . В качестве параметра distributionDBName передайте имя базы данных распространителя, а в параметре agentID— идентификатор задания.

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

  1. Создайте соединение с распространителем с помощью экземпляра класса ServerConnection .

  2. Создайте экземпляр класса ReplicationServer. Передайте объект ServerConnection , созданный на шаге 1.

  3. Вызовите метод LoadProperties . Если этот метод возвратил значение false, проверьте, существует ли распространитель.

  4. Вызовите метод EnumAgentProfiles . Передайте значение AgentType , чтобы возвращались только те профили, которые предназначены для конкретного типа агента репликации.

  5. Извлеките объект AgentProfile из возвращенного списка ArrayList, где свойство Name объекта соответствует имени профиля.

  6. Чтобы изменить профиль, вызовите один из следующих методов объекта AgentProfile .

    • AddParameter – добавляет к профилю поддерживаемый параметр, где name – имя параметра агента репликации, а value – заданное значение. Перебор всех поддерживаемых параметров агента для данного типа агента производится методом EnumParameterInfo . Этот метод возвращает список ArrayList , содержащий объекты AgentProfileParameterInfo , которые представляют все поддерживаемые параметры.

    • RemoveParameter – удаляет один из существующих параметров из профиля, где name – имя параметра агента репликации. Чтобы перечислить все определенные для профиля параметры текущего агента, вызовите метод EnumParameters . Этот метод возвращает список ArrayList объектов AgentProfileParameter , которые представляют существующие параметры для данного профиля.

    • ChangeParameter – изменяет значение существующего параметра профиля, где name – имя параметра агента, а newValue – значение, которое параметр получает после изменения. Чтобы перечислить все определенные для профиля параметры текущего агента, вызовите метод EnumParameters . Этот метод возвращает список ArrayList объектов AgentProfileParameter , которые представляют существующие параметры для данного профиля. Перебор всех поддерживаемых параметров агента производится методом EnumParameterInfo . Этот метод возвращает список ArrayList , содержащий объекты AgentProfileParameterInfo , которые представляют поддерживаемые значения для всех параметров.

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

  1. Создайте соединение с распространителем с помощью экземпляра класса ServerConnection .

  2. Создайте экземпляр класса AgentProfile. Присвойте имя профиля свойству Name и значение ServerConnection , полученное на шаге 1, свойству ConnectionContext.

  3. Вызовите метод LoadProperties . Если метод вернул значение false, то имя указано неверно или профиль не существует на сервере.

  4. Удостоверьтесь в том, что свойству Type присвоено значение User, указывающее на клиентский профиль. Не следует удалять профиль, имеющий значение System в свойстве Type.

  5. Вызовите метод Remove для удаления с сервера пользовательского профиля, представляемого этим объектом.

Дальнейшие действия. После изменения параметров агента

Изменения параметров агента вступают в действие при следующем запуске агента. Если агент выполняется в непрерывном режиме, следует остановить и перезапустить агент. Начиная с SQL Server 2017 с накопительным пакетом обновлений 3 (CU3) некоторые изменения параметров агента вступают в силу без перезагрузки агентов.