Vorgehensweise: Arbeiten mit Replikations-Agentprofilen (Replikationsprogrammierung mit Transact-SQL)

Mithilfe von Agentprofilen werden beim Erstellen eines Agentauftrags die Standardwerte definiert. Jeder Agent verfügt über ein Standardprofil, und einige Agents verfügen über zusätzliche vordefinierte Profile. Sie können benutzerdefinierte Profile mithilfe gespeicherter Replikationsprozeduren erstellen. Weitere Informationen zu Agentprofilen finden Sie unter Replikations-Agent-Profile.

HinweisHinweis

Ändern oder löschen Sie keine vordefinierten Profile. Die Änderungen der Agentparameter treten in Kraft, wenn der Agent das nächste Mal gestartet wird. Wenn der Agent ständig ausgeführt wird, müssen Sie den Agent beenden und neu starten.

So erstellen Sie ein neues Agentprofil

  1. Führen Sie auf dem Verteiler sp_add_agent_profile (Transact-SQL) aus. Geben Sie @name, einen Wert 1 für @profile_type und einen der folgenden Werte für @agent_type an:

    Wenn dieses Profil zum neuen Standardprofil für den zugehörigen Typ von Replikations-Agent wird, geben Sie einen Wert 1 für @default an. Der Bezeichner für das neue Profil wird mithilfe des @profile_id-Ausgabeparameters zurückgegeben. Dadurch wird ein neues Profil mit einem Satz von Profilparametern erstellt, das auf dem Standardprofil des bestimmten Agenttyps basiert.

  2. Nach der Erstellung des neuen Profils können Sie Standardparameter hinzufügen, entfernen oder ändern, um das Profil anzupassen.

So ändern Sie ein vorhandenes Agentprofil

  1. Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_type an:

    Dadurch werden alle Profile für den angegebenen Agenttyp zurückgegeben. Beachten Sie den Wert profile_id im Resultset für das zu ändernde Profil.

  2. Führen Sie auf dem Verteiler sp_help_agent_parameter (Transact-SQL) aus. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id an. Dadurch werden alle Parameter für das Profil zurückgegeben. Beachten Sie den Namen der zu ändernden Parameter bzw. der aus dem Profil zu entfernenden Parameter.

  3. Um den Wert eines Parameters in einem Profil zu ändern, führen Sie sp_change_agent_profile (Transact-SQL) aus. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id, den Namen des zu ändernden Parameters für @property und einen neuen Wert für den Parameter für @value an.

    HinweisHinweis

    Es ist nicht möglich, ein vorhandenes Agentprofil in das Standardprofil für einen Agent zu ändern. Stattdessen müssen Sie ein neues Profil als Standardprofil erstellen, wie in der vorherigen Prozedur beschrieben.

  4. Um einen Parameter aus einem Profil zu entfernen, führen Sie sp_drop_agent_parameter (Transact-SQL) aus. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id und den Namen des zu entfernenden Parameters für @parameter_name an.

  5. Sie müssen die folgenden Schritte ausführen, um einem Profil einen neuen Parameter hinzuzufügen:

    • Fragen Sie die MSagentparameterlist (Transact-SQL)-Tabelle auf dem Verteiler ab, um die Profilparameter zu bestimmen, die für die einzelnen Agenttypen festgelegt werden können.

    • Führen Sie auf dem Verteiler sp_add_agent_parameter (Transact-SQL) aus. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id, den Namen eines gültigen Parameters zum Hinzufügen für @parameter_name und den Wert des Parameters für @parameter_value an.

So entfernen Sie ein Agentprofil

  1. Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_type an:

    Dadurch werden alle Profile für den angegebenen Agenttyp zurückgegeben. Beachten Sie den Wert profile_id im Resultset für das zu entfernende Profil.

  2. Führen Sie auf dem Verteiler sp_drop_agent_profile (Transact-SQL) aus. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id an.

So verwenden Sie während der Synchronisierung Agentprofile

  1. Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_type an:

    Dadurch werden alle Profile für den angegebenen Agenttyp zurückgegeben. Beachten Sie den Wert profile_name im Resultset für das zu verwendende Profil.

  2. Wenn der Agent in einem Agentauftrag gestartet wird, bearbeiten Sie den Auftragsschritt, mit dem der Agent gestartet wird, um den in Schritt 1 ermittelten Wert profile_name nach dem -ProfileName-Befehlszeilenparameter anzugeben. Weitere Informationen finden Sie unter Vorgehensweise: Anzeigen und Ändern von Befehlszeilenparametern des Replikations-Agents (SQL Server Management Studio).

  3. Wenn der Agent von der Eingabeaufforderung gestartet wird, geben Sie den in Schritt 1 ermittelten Wert profile_name nach dem -ProfileName-Befehlszeilenparameter an.

Beispiel

In diesem Beispiel werden ein benutzerdefiniertes Profil für den Merge-Agent mit der Bezeichnung custom_merge erstellt, der Wert des -UploadReadChangesPerBatch-Parameters geändert, ein neuer -ExchangeType-Parameter hinzugefügt und Informationen zu dem Profil, das erstellt wird, zurückgegeben.

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