Arbeta med replikationsagentprofiler

gäller för:SQL ServerAzure SQL Managed Instance

Detta ämne beskriver hur man arbetar med Replication Agent-profiler i SQL Server genom att använda SQL Server Management Studio, Transact-SQL eller Replication Management Objects (RMO). Beteendet hos varje replikationsagent styrs av en uppsättning parametrar som kan ställas in via agentprofiler. Varje agent har en standardprofil, och vissa har ytterligare fördefinierade profiler; Vid en given tidpunkt är endast en profil aktiv för en agent.

Använda SQL Server Management Studio

För att komma åt dialogrutan Agent Profiles från SQL Server Management Studio

  1. På sidan Allmänt i dialogrutan Distributor Properties - <Distributor> klickar du på Profilstandard.

För att komma åt dialogrutan Agent Profiles från Replication Monitor

  • För att öppna dialogrutan för alla agenter, högerklicka på en Publisher och klicka sedan på Agent Profiles.

  • För att öppna dialogrutan för en enda agent:

    1. Expandera en Publisher-grupp i den vänstra rutan i Replikeringsövervakaren, expandera en Utgivare och klicka sedan på en publikation.

    2. För Distribution Agent- och Merge Agent-profiler, högerklicka på en prenumeration under fliken Alla prenumerationer och klicka sedan på Agent Profile. För andra agenter, högerklicka på agenten under fliken Agenter och sedan på Agent Profil.

Att specificera en profil för en agent

  1. Om dialogrutan Agentprofiler visar profiler för mer än en agent, välj en agent.

  2. Välj en profil i kolumnen Standard för nya i rutnätet Agentprofiler. Som standard tillämpas profilen endast på agenter för nya publikationer och prenumerationer.

  3. För att specificera att alla agenter av den valda typen för befintliga publikationer eller prenumerationer ska använda denna profil, klicka på Ändra befintliga agenter.

För att se och redigera parametrarna som är kopplade till en profil

  1. Om dialogrutan Agentprofiler visar profiler för mer än en agent, välj en agent.

  2. Klicka på egenskapsknappen (...) bredvid en profil.

  3. Visa parametrarna och värdena i <dialogrutan ProfileName> Profile Properties .

    • Parametrar i användardefinierade profiler kan redigeras; parametrar i fördefinierade systemprofiler kan inte.

    • För att visa alla parametrar för en agent avmarkerar du kryssrutan Visa endast parametrar som används i den här profilen. För information om agentparametrar, se länkarna i slutet av detta ämne.

  4. Klicka på Stäng.

För att skapa en användardefinierad profil

  1. Om dialogrutan Agentprofiler visar profiler för mer än en agent, välj en agent.

  2. Klicka på Nytt.

  3. I dialogrutan för initiering av nya agentprofilen väljer du en befintlig profil som ska baseras på den nya profilen.

  4. I dialogrutan Ny agentprofil skriver du in värden i textrutorna Namn och Beskrivning .

  5. Ändra parametrarna för att anpassa profilen. För att visa alla parametrar för en agent avmarkerar du kryssrutan Visa endast parametrar som används i den här profilen. För information om agentparametrar, se länkarna i slutet av detta ämne.

  6. Välj OK.

För att ta bort en användardefinierad profil

  1. Om dialogrutan Agentprofiler visar profiler för mer än en agent, välj en agent.

  2. Om en profil är kopplad till en eller flera agenter, ändra profilen för dessa agenter:

    1. Välj en annan profil i rutnätet Agentprofiler .

    2. Klicka på Ändra befintliga agenter.

      Note

      Detta kommer att ändra profilen för alla agenter av den valda typen för befintliga publikationer eller prenumerationer, inte bara de som använder profilen du vill ta bort.

  3. Välj profilen du vill ta bort och klicka sedan på Radera.

  4. Välj OK.

Använda Transact-SQL

För att skapa en ny agentprofil

  1. Hos Distributören kör du sp_add_agent_profile (Transact-SQL). Specificera @name, ett värde på 1 för @profile_type, och ett av följande värden för @agent_type:

    Om denna profil blir den nya standardprofilen för dess typ av replikationsagent, ange värdet 1 för @default. Identifieraren för den nya profilen returneras med hjälp av @profile_id utgångsparameter. Detta skapar en ny profil med en uppsättning profilparametrar baserade på standardprofilen för den givna agenttypen.

  2. Efter att den nya profilen har skapats, lägg till, ta bort eller ändra standardparametrarna för att anpassa profilen.

För att modifiera en befintlig agentprofil

  1. På distributören kör du sp_help_agent_profile (Transact-SQL). Ange ett av följande värden för @agent_type:

    Detta returnerar alla profiler för den angivna typen av agent. Notera värdet på profile_id i resultatuppsättningen för den profil som ska ändras.

  2. På distributören, utför sp_help_agent_parameter (Transact-SQL). Ange profilidentifieraren från steg 1 för @profile_id. Detta returnerar alla parametrar för profilen. Notera namnet på eventuella parametrar som ska ändras eller tas bort från profilen.

  3. För att ändra värdet på en parameter i en profil, kör sp_change_agent_parameter (Transact-SQL). Ange profilidentifieraren från steg 1 för @profile_id, namnet på parametern som ska ändras för @parameter_name, och ett nytt värde för parametern för @parameter_value.

    Note

    Du kan inte ändra en befintlig agentprofil till att bli standardprofil för en agent. Du måste istället skapa en ny profil som standardprofil, som visades i föregående procedur.

  4. För att ta bort en parameter från en profil, kör sp_drop_agent_parameter (Transact-SQL). Ange profilidentifieraren från steg 1 för @profile_id och namnet på parametern som ska tas bort för @parameter_name.

  5. För att lägga till en ny parameter i en profil måste du göra följande:

För att radera en agentprofil

  1. På distributören kör du sp_help_agent_profile (Transact-SQL). Ange ett av följande värden för @agent_type:

    Detta returnerar alla profiler för den angivna typen av agent. Notera värdet för profile_id i resultatuppsättningen för den profil som ska tas bort.

  2. På Distributören kör du sp_drop_agent_profile (Transact-SQL). Ange profilidentifieraren från steg 1 för @profile_id.

Att använda agentprofiler under synkronisering

  1. På distributören kör du sp_help_agent_profile (Transact-SQL). Ange ett av följande värden för @agent_type:

    Detta returnerar alla profiler för den angivna typen av agent. Notera värdet för profile_name i resultatuppsättningen för den profil som ska användas.

  2. Om agenten startas från ett agentjobb redigerar du jobbsteget som startar agenten för att ange värdet för profile_name som erhölls i steg 1 efter kommandoradsparametern -ProfileName. För mer information, se Visa och ändra Replikationsagentens kommandopromptparametrar (SQL Server Management Studio).

  3. När du startar agenten från kommandoprompten anger du det värde för profile_name som erhölls i steg 1 efter kommandoradsparametern -ProfileName.

Exempel (Transact-SQL)

Detta exempel skapar en anpassad profil för Merge Agent som heter custom_merge, ändrar värdet på parametern -UploadReadChangesPerBatch, lägger till en ny -ExchangeType-parameter och returnerar information om den profil som skapas.

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

Att använda RMO

För att skapa en ny agentprofil

  1. Skapa en anslutning till distributören genom att använda en instans av ServerConnection klassen.

  2. Skapa en instans av AgentProfile klassen.

  3. Sätt följande egenskaper på objektet:

  4. Anropa Create metoden för att skapa profilen på servern.

  5. När profilen finns på servern kan du anpassa den genom att lägga till, ta bort eller ändra värdena på replikationsagentens parametrar.

  6. För att tilldela profilen till ett befintligt replikationsagentjobb, anropa metoden AssignToAgent . Skicka namnet på distributionsdatabasen för distributionDBName och ID:t för jobbet för agentID.

För att modifiera en befintlig agentprofil

  1. Skapa en anslutning till distributören genom att använda en instans av ServerConnection klassen.

  2. Skapa en instans av ReplicationServer klassen. Skicka objektet ServerConnection som skapats i steg 1.

  3. Anropa LoadProperties metoden. Om denna metod returnerar falskt, verifiera att distributören existerar.

  4. Anropa EnumAgentProfiles metoden. Skicka ett AgentType värde för att begränsa de returnerade profilerna till en specifik typ av replikationsagent.

  5. Hämta det önskade AgentProfile objektet från det returnerade ArrayList, där egenskapen Name för objektet matchar profilnamnet.

  6. Anropa en av följande metoder för AgentProfile för att ändra profilen:

    • AddParameter - lägger till en stödd parameter till profilen, där namnet är namnet på replikationsagentens parameter och värdet är det specificerade värdet. För att räkna upp alla stödda agentparametrar för en given agenttyp, anropa metoden EnumParameterInfo . Denna metod returnerar ett ArrayList av AgentProfileParameterInfo objekt som representerar alla stödda parametrar.

    • RemoveParameter - tar bort en befintlig parameter från profilen, där namnet är namnet på replikationsagentens parameter. För att räkna upp alla aktuella agentparametrar definierade för profilen, anropa metoden EnumParameters . Denna metod returnerar ett ArrayList antal AgentProfileParameter objekt som representerar den befintliga parametern för denna profil.

    • ChangeParameter - ändrar inställningen av en befintlig parameter i profilen, där namn är namnet på agentparametern och newValue är värdet som parametern ändras till. För att räkna upp alla aktuella agentparametrar definierade för profilen, anropa metoden EnumParameters . Denna metod returnerar ett ArrayList antal AgentProfileParameter objekt som representerar den befintliga parametern för denna profil. För att räkna upp alla stödda agentparametrar, anropa metoden EnumParameterInfo . Denna metod returnerar ett ArrayList av AgentProfileParameterInfo objekt som representerar de stödda värdena för alla parametrar.

För att radera en agentprofil

  1. Skapa en anslutning till distributören genom att använda en instans av ServerConnection klassen.

  2. Skapa en instans av AgentProfile klassen. Ange namnet på profilen för Name och ServerConnection från steg 1 för ConnectionContext.

  3. Anropa LoadProperties metoden. Om denna metod returnerar false var antingen det angivna namnet felaktigt eller så finns inte profilen på servern.

  4. Verifiera att egenskapen Type är satt till User, vilket indikerar en kundprofil. Du bör inte ta bort en profil som har värdet System för Type.

  5. Anropa Remove metoden för att ta bort den användardefinierade profilen som representeras av detta objekt från servern.

Uppföljning: Efter att agentparametrar ändrats

Ändringar i agentparametern börjar gälla nästa gång agenten startas. Om agenten körs kontinuerligt måste du stoppa och starta om agenten. Från och med SQL Server 2017 CU3 träder vissa ändringar i agentparametrarna i kraft utan att agenterna behöver startas om.