Arbeiten mit Replikations-Agent-Profilen
Gilt für: SQL Server Azure SQL Managed Instance
In diesem Thema wird beschrieben, wie Sie mit Replikations-Agent-Profilen in SQL Server mithilfe von SQL Server Management Studio, Transact-SQL oder Replikationsverwaltungsobjekten (Replication Management Objects, RMO) arbeiten. Das Verhalten der einzelnen Replikations-Agents wird durch eine Reihe von Parametern gesteuert, die über Agentprofile festgelegt werden können. Jeder Agent weist ein Standardprofil auf, und einige Agents besitzen weitere vordefinierte Profile, wobei für einen Agent jeweils immer nur ein Profil aktiv ist.
In diesem Thema
So arbeiten Sie mit Replikations-Agentprofilen mit:
Auf das Dialogfeld Agentprofile zugreifen
Ein Profil für einen Agent angeben
Erstellen eines Profils
Ein Profil ändern
Ein Profil löschen
Erstellen eines Profils
Ein Profil ändern
Ein Profil löschen
Agentprofile während der Synchronisierung verwenden
Beispiel für Transact-SQL
Replikationsverwaltungsobjekte (RMO)
Erstellen eines Profils
Ein Profil ändern
Ein Profil löschen
Nachverfolgung: Nach dem Ändern der Agentparameter
Verwendung von SQL Server Management Studio
So greifen Sie auf das Dialogfeld Agentprofile in SQL Server Management Studio zu
- Klicken Sie im Dialogfeld Verteilereigenschaften - <Distributor>> auf der Seite Allgemein auf Profilstandards.
So greifen Sie über den Replikationsmonitor auf das Dialogfeld Agentprofile zu
Um das Dialogfeld für alle Agents zu öffnen, klicken Sie mit der rechten Maustaste auf einen Verleger, und klicken Sie dann auf Agentprofile.
Gehen Sie folgendermaßen vor, um das Dialogfeld für einen Agent zu öffnen:
Erweitern Sie im linken Bereich des Replikationsmonitors eine Verlegergruppe, erweitern Sie einen Verleger, und klicken Sie dann auf eine Veröffentlichung.
Klicken Sie bei Verteilungs-Agent- oder Merge-Agent-Profilen auf der Registerkarte Alle Abonnements mit der rechten Maustaste auf ein Abonnement, und klicken Sie dann auf Agentprofil. Klicken Sie bei anderen Agents auf der Registerkarte Agents mit der rechten Maustaste auf den Agent, und klicken Sie dann auf Agentprofil.
So geben Sie ein Profil für einen Agent an
Wenn im Dialogfeld Agentprofile Profile für mehrere Agents angezeigt werden, wählen Sie einen Agent aus.
Wählen Sie im Raster Agentprofile in der Default for new -Spalte ein Profil aus. Standardmäßig wird das Profil nur auf Agents für neue Veröffentlichungen und Abonnements angewendet.
Wenn Sie angeben möchten, dass dieses Profil von allen Agents des ausgewählten Typs für vorhandene Veröffentlichungen oder Abonnements verwendet werden soll, klicken Sie auf Vorhandene Agents ändern.
So zeigen Sie einem Profil zugeordnete Parameter an und bearbeiten Sie die Parameter
Wenn im Dialogfeld Agentprofile Profile für mehrere Agents angezeigt werden, wählen Sie einen Agent aus.
Klicken Sie auf die Eigenschaftenschaltfläche (…) neben einem Profil.
Im Dialogfeld <Profilname> Profileigenschaften werden die Parameter und Werte angezeigt.
Parameter in benutzerdefinierten Profilen können bearbeitet werden; Parameter in vordefinierten Systemprofilen können nicht bearbeitet werden.
Um alle Parameter für einen Agent anzuzeigen, deaktivieren Sie das Kontrollkästchen Nur die in diesem Profil verwendeten Parameter anzeigen . Informationen zu den Agentparametern finden Sie unter den Links am Ende dieses Themas.
Klicken Sie auf Schließen.
So erstellen Sie ein benutzerdefiniertes Profil
Wenn im Dialogfeld Agentprofile Profile für mehrere Agents angezeigt werden, wählen Sie einen Agent aus.
Klicken Sie auf Neu.
Wählen Sie im Initialisierungsdialogfeld Neues Agentprofil ein vorhandenes Profil aus, auf dem das neue Profil basieren soll.
Geben Sie im Dialogfeld Neues Agentprofil Werte in die Textfelder Name und Beschreibung ein.
Ändern Sie die Parameter in dem gewünschten Profil entsprechend. Um alle Parameter für einen Agent anzuzeigen, deaktivieren Sie das Kontrollkästchen Nur die in diesem Profil verwendeten Parameter anzeigen . Informationen zu den Agentparametern finden Sie unter den Links am Ende dieses Themas.
Wählen Sie OK aus.
So löschen Sie ein benutzerdefiniertes Profil
Wenn im Dialogfeld Agentprofile Profile für mehrere Agents angezeigt werden, wählen Sie einen Agent aus.
Wenn ein Profil einem oder mehreren Agents zugeordnet ist, ändern Sie das Profil für diese Agents:
Wählen Sie im Raster Agentprofile ein anderes Profil aus.
Klicken Sie auf Vorhandene Agents ändern.
Hinweis
Dadurch wird das Profil nicht nur für die Agents geändert, deren Profil Sie löschen möchten, sondern für alle Agents des ausgewählten Typs für vorhandene Veröffentlichungen oder Abonnements.
Wählen Sie das zu löschende Profil aus, und klicken Sie dann auf Löschen.
Wählen Sie OK aus.
Verwenden von Transact-SQL
So erstellen Sie ein neues Agentprofil
Führen Sie auf dem Verteiler sp_add_agent_profile (Transact-SQL) aus. Geben Sie @name, einen Wert 1 für @profile_typeund einen der folgenden Werte für @agent_typean:
Wenn dieses Profil zum neuen Standardprofil für den zugehörigen Typ von Replikations-Agent wird, geben Sie einen Wert 1 für @defaultan. 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.
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
Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_typean:
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.
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_idan. 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.
Führen Sie sp_change_agent_parameter (Transact-SQL) aus, um den Wert eines Parameters in einem Profil zu ändern. Geben Sie für @profile_id den Profilbezeichner aus Schritt 1, für @parameter_name den Namen des zu ändernden Parameters und für @parameter_value einen neuen Wert für den Parameter an.
Hinweis
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.
Führen sp_drop_agent_parameter (Transact-SQL) aus, um einen Parameter von einem Profil zu entfernen. Geben Sie den Bezeichner des Profils aus Schritt 1 für @profile_id und den Namen des zu entfernenden Parameters für @parameter_namean.
Sie müssen die folgenden Schritte ausführen, um einem Profil einen neuen Parameter hinzuzufügen:
Fragen Sie die Tabelle MSagentparameterlist (Transact-SQL) 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_nameund den Wert des Parameters für @parameter_valuean.
So löschen Sie ein Agentprofil
Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_typean:
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.
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_idan.
So verwenden Sie während der Synchronisierung Agentprofile
Führen Sie auf dem Verteiler sp_help_agent_profile (Transact-SQL) aus. Geben Sie einen der folgenden Werte für @agent_typean:
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.
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 Anzeigen und Ändern von Befehlszeilenparametern des Replikations-Agents (SQL Server Management Studio).
Wenn der Agent von der Eingabeaufforderung gestartet wird, geben Sie den in Schritt 1 ermittelten Wert profile_name nach dem -ProfileName -Befehlszeilenparameter an.
Beispiel (Transact-SQL)
In diesem Beispiel werden ein benutzerdefiniertes Profil für den Merge-Agent mit der Bezeichnung custom_mergeerstellt, 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
Verwenden von RMO
So erstellen Sie ein neues Agentprofil
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie eine Instanz der ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der AgentProfile-Klasse.
Legen Sie die folgenden Eigenschaften für das Objekt fest:
Name - der Name des Profils.
AgentType - ein AgentType -Wert, der den Typ des Replikations-Agents angibt, für den das Profil erstellt wird.
ConnectionContext - die in Schritt 1 erstellte ServerConnection .
(Optional) Description - eine Beschreibung des Profils.
(Optional) Default - Legen Sie diese Eigenschaft auf true fest, wenn alle neuen Agentaufträge für diesen AgentType dieses Profil standardmäßig verwenden.
Rufen Sie die Create -Methode auf, um das Profil auf dem Server zu erstellen.
Sobald das Profil auf dem Server vorhanden ist, können Sie es anpassen, indem Sie Werte für die Parameter für Replikations-Agents hinzufügen, entfernen oder ändern.
Rufen Sie die AssignToAgent -Methode auf, um das Profil einem vorhandenen Auftrag des Replikations-Agents zuzuordnen. Übergeben Sie den Namen der Verteilungsdatenbank für distributionDBName und die ID des Auftrags für agentID.
So ändern Sie ein vorhandenes Agentprofil
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie eine Instanz der ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der ReplicationServer-Klasse. Übergeben Sie das in Schritt 1 erstellte ServerConnection -Objekt.
Rufen Sie die LoadProperties-Methode auf. Überprüfen Sie, ob der Verteiler vorhanden ist, wenn diese Methode falsezurückgibt.
Rufen Sie die EnumAgentProfiles-Methode auf. Übergeben Sie einen AgentType -Wert, um die zurückgegebenen Profile für einen bestimmten Typ von Replikations-Agent einzugrenzen.
Rufen Sie das gewünschte AgentProfile -Objekt von der zurückgegebenen ArrayListab, wobei die Name -Eigenschaft des Objekt mit dem Profilnamen übereinstimmt.
Rufen Sie eine der folgenden Methoden von AgentProfile auf, um das Profil zu ändern:
AddParameter - fügt dem Profil einen unterstützten Parameter hinzu, wobei name der Name des Parameters für den Replikations-Agent und value der angegebene Wert ist. Rufen Sie zum Aufzählen aller unterstützten Agentparameter für einen bestimmten Agenttyp die EnumParameterInfo -Methode auf. Diese Methode gibt eine ArrayList von AgentProfileParameterInfo -Objekten zurück, die alle unterstützten Parameter darstellen.
RemoveParameter - entfernt einen vorhandenen Parameter aus dem Profil, wobei name der Name des Parameters für den Replikations-Agent ist. Rufen Sie zum Aufzählen aller aktuellen Agentparameter, die für das Profil definiert sind, die EnumParameters -Methode auf. Diese Methode gibt eine ArrayList von AgentProfileParameter -Objekten zurück, die den vorhandenen Parameter für dieses Profil darstellen.
ChangeParameter - ändert die Einstellung eines vorhandenen Parameters im Profil, wobei name der Name des Agentparameters und newValue der Wert ist, in den der Parameter geändert wird. Rufen Sie zum Aufzählen aller aktuellen Agentparameter, die für das Profil definiert sind, die EnumParameters -Methode auf. Diese Methode gibt eine ArrayList von AgentProfileParameter -Objekten zurück, die den vorhandenen Parameter für dieses Profil darstellen. Rufen Sie zum Aufzählen aller unterstützten Einstellungen für den Agentparameter die EnumParameterInfo -Methode auf. Diese Methode gibt eine ArrayList von AgentProfileParameterInfo -Objekten zurück, die die unterstützten Werte für alle Parameter darstellen.
So löschen Sie ein Agentprofil
Erstellen Sie eine Verbindung mit dem Verteiler, indem Sie eine Instanz der ServerConnection -Klasse verwenden.
Erstellen Sie eine Instanz der AgentProfile-Klasse. Legen Sie den Namen des Profils für Name und ServerConnection aus Schritt 1 für ConnectionContextfest.
Rufen Sie die LoadProperties-Methode auf. Wenn diese Methode falsezurückgibt, wurde ein falscher Name angegeben, oder das Profil ist auf dem Server nicht vorhanden.
Stellen Sie sicher, dass die Type -Eigenschaft auf Userfestgelegt ist, womit ein Kundenprofil angegeben wird. Entfernen Sie kein Profil, das einen Wert System für Typeaufweist.
Rufen Sie die Remove -Methode auf, um das benutzerdefinierte Profil, das durch dieses Objekt dargestellt wird, vom Server zu entfernen.
Nachverfolgung: Nach dem Ändern der Agentparameter
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. Ab SQL Server 2017 CU3 treten einige Änderungen an Agentparametern in Kraft, ohne dass die Agents neu gestartet werden müssen.