Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:SQL Server
Azure SQL Managed Instance
Ten temat opisuje, jak pracować z profilami agentów replikacyjnych w SQL Server za pomocą SQL Server Management Studio, Transact-SQL lub Obiektów Zarządzania Replikacją (RMO). Zachowanie każdego agenta replikacyjnego jest kontrolowane przez zestaw parametrów, które można ustawić za pomocą profili agentów. Każdy agent ma domyślny profil, a niektóre mają dodatkowe predefiniowane profile; W danym momencie aktywny jest tylko jeden profil agenta.
Korzystanie z programu SQL Server Management Studio
Aby uzyskać dostęp do okna dialogowego Profile Agentów z SQL Server Management Studio
- Na stronie ogólnej w oknie dialogowym Właściwości dystrybutora - <Dystrybutor> kliknij Domyślne profile (Profile Defaults).
Aby uzyskać dostęp do okna dialogowego Profile agentów w Monitorze replikacji
Aby otworzyć okno dialogowe dla wszystkich agentów, kliknij prawym przyciskiem myszy Publisher, a następnie kliknij Profile agentów.
Aby otworzyć okno dialogowe dla jednego agenta:
Rozwiń grupę Wydawca w lewym okienku Monitora Replikacji, rozwiń wydawcę, a następnie kliknij publikację.
Aby uzyskać profile Distribution Agent i Merge Agent, kliknij prawym przyciskiem myszy na subskrypcję na zakładce Wszystkie subskrypcje, a następnie kliknij Profil Agenta. Dla innych agentów kliknij prawym przyciskiem myszy na agenta na zakładce Agenci, a następnie kliknij Profil Agenta.
Aby określić profil dla agenta
Jeśli okno dialogowe Profile Agentów wyświetla profile dla więcej niż jednego agenta, wybierz agenta.
Wybierz profil w kolumnie Domyślny dla nowych w tabeli Profile agentów. Domyślnie profil jest stosowany tylko do agentów w przypadku nowych publikacji i subskrypcji.
Aby określić, że wszyscy agenci wybranego typu dla istniejących publikacji lub subskrypcji powinni korzystać z tego profilu, kliknij Zmień istniejących agentów.
Aby zobaczyć i edytować parametry powiązane z profilem
Jeśli okno dialogowe Profile Agentów wyświetla profile dla więcej niż jednego agenta, wybierz agenta.
Kliknij przycisk właściwości (...) obok profilu.
Zobacz parametry i wartości w oknie <dialogowym ProfileName> Profile Properties .
Parametry w profilach zdefiniowanych przez użytkownika można edytować; Parametry w predefiniowanych profilach systemowych nie mogą tego zrobić.
Aby zobaczyć wszystkie parametry agenta, usuń pole Pokaż tylko parametry użyte w tym profilu . Informacje o parametrach agenta można znaleźć w linkach na końcu tego tematu.
Kliknij Zamknij.
Aby utworzyć profil zdefiniowany przez użytkownika
Jeśli okno dialogowe Profile Agentów wyświetla profile dla więcej niż jednego agenta, wybierz agenta.
Kliknij przycisk Nowy.
W oknie dialogowym inicjalizacji nowego profilu agenta wybierz istniejący profil, na którym oprzeć nowy profil.
W oknie dialogowym Nowy Profil Agenta wprowadź wartości w polach tekstowych Nazwa i Opis .
Zmodyfikuj parametry, aby dostosować profil. Aby zobaczyć wszystkie parametry agenta, usuń pole Pokaż tylko parametry użyte w tym profilu . Informacje o parametrach agenta można znaleźć w linkach na końcu tego tematu.
Kliknij przycisk OK.
Aby usunąć profil zdefiniowany przez użytkownika
Jeśli okno dialogowe Profile Agentów wyświetla profile dla więcej niż jednego agenta, wybierz agenta.
Jeśli profil jest powiązany z jednym lub kilkoma agentami, zmień profil dla tych agentów:
Wybierz inny profil w siatce profili agentów .
Kliknij Zmień istniejących agentów.
Note
To zmieni profil wszystkich agentów wybranego typu dla istniejących publikacji lub subskrypcji, nie tylko tych, którzy korzystają z profilu, który chcesz usunąć.
Wybierz profil, który chcesz usunąć, a następnie kliknij Usuń.
Kliknij przycisk OK.
Korzystanie z Transact-SQL
Aby utworzyć nowy profil agenta
W Dystrybutorze wykonaj sp_add_agent_profile (Transact-SQL). Określ @name, wartość 1 dla @profile_type oraz jedną z następujących wartości dla @agent_type:
Jeśli ten profil stanie się nowym domyślnym profilem dla swojego typu agenta replikacyjnego, należy określić wartość 1 dla @default. Identyfikator nowego profilu jest zwracany za pomocą parametru wyjściowego @profile_id . Tworzy to nowy profil z zestawem parametrów profilu opartych na domyślnym profilu dla danego typu agenta.
Po utworzeniu nowego profilu dodaj, usuń lub zmodyfikuj domyślne parametry, aby dostosować profil.
Aby zmodyfikować istniejący profil agenta
W Dystrybutorze wykonaj sp_help_agent_profile (Transact-SQL). Określ jedną z następujących wartości dla @agent_type:
Zwraca to wszystkie profile dla określonego typu agenta. Zanotuj wartość profile_id w zestawie wyników dla profilu, który ma zostać zmieniony.
Na Dystrybutorze wykonaj sp_help_agent_parameter (Transact-SQL). Określ identyfikator profilu od kroku 1 dla @profile_id. To zwraca wszystkie parametry profilu. Zanotuj nazwę parametrów do modyfikacji lub usunięcia z profilu.
Aby zmienić wartość parametru w profilu, wykonaj sp_change_agent_parameter (Transact-SQL). Określ identyfikator profilu z kroku 1 dla @profile_id, nazwę parametru do zmiany dla @parameter_name oraz nową wartość parametru dla @parameter_value.
Note
Nie można zmienić istniejącego profilu agenta, aby stał się domyślnym profilem agenta. Zamiast tego musisz utworzyć nowy profil jako profil domyślny, jak pokazano w poprzedniej procedurze.
Aby usunąć parametr z profilu, wykonaj sp_drop_agent_parameter (Transact-SQL). Określ identyfikator profilu od kroku 1 dla @profile_id oraz nazwę parametru do usunięcia dla @parameter_name.
Aby dodać nowy parametr do profilu, musisz zrobić następujące czynności:
Zapytaj tabelę MSagentparameterlist (Transact-SQL ) w Dystrybutorze, aby określić, jakie parametry profilu można ustawić dla każdego typu agenta.
W Dystrybutorze wykonaj sp_add_agent_parameter (Transact-SQL). Określ identyfikator profilu z kroku 1 dla @profile_id, nazwę ważnego parametru do dodania dla @parameter_name oraz wartość parametru dla @parameter_value.
Aby usunąć profil agenta
W Dystrybutorze wykonaj sp_help_agent_profile (Transact-SQL). Określ jedną z następujących wartości dla @agent_type:
Zwraca to wszystkie profile dla określonego typu agenta. Zwróć uwagę na wartość profile_id w zbiorze wyników dla profilu, który ma zostać usunięty.
W dystrybutorze wykonaj sp_drop_agent_profile (Transact-SQL). Określ identyfikator profilu od kroku 1 dla @profile_id.
Aby używać profili agentów podczas synchronizacji
W Dystrybutorze wykonaj sp_help_agent_profile (Transact-SQL). Określ jedną z następujących wartości dla @agent_type:
Zwraca to wszystkie profile dla określonego typu agenta. Zwróć uwagę na wartość profile_name w zbiorze wyników, z którego profil ma korzystać.
Jeśli agent jest uruchamiany z zadania agenta, edytuj krok zadania, który uruchamia agenta, aby określić wartość profile_name uzyskaną w kroku 1 po parametrze wiersza poleceń -ProfileName . Więcej informacji można znaleźć w artykule Zobacz i zmodyfikuj parametry wiersza poleceń agenta replikacyjnego (SQL Server Management Studio).
Rozpoczynając agenta z wiersza poleceń, określ wartość profile_name uzyskaną w kroku 1 po parametrze wiersza poleceń -ProfileName .
Przykład (Transact-SQL)
Ten przykład tworzy niestandardowy profil dla Merge Agent o nazwie custom_merge, zmienia wartość parametru -UploadReadChangesPerBatch, dodaje nowy parametr -ExchangeType i zwraca informacje o utworzonym profilu.
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
Korzystanie z RMO
Aby utworzyć nowy profil agenta
Utworzenie połączenia z Dystrybutorem, używając instancji ServerConnection tej klasy.
Utwórz wystąpienie klasy AgentProfile.
Ustaw następujące właściwości obiektu:
Name - Nazwa profilu.
AgentType - AgentType wartość określająca typ agenta replikacyjnego, dla którego profil jest tworzony.
ConnectionContext - ServerConnection utworzone w kroku 1.
(Opcjonalnie) Description - opis profilu.
(Opcjonalnie) Default — ustaw tę właściwość na true, jeśli wszystkie nowe zadania agenta dla tego AgentType będą domyślnie korzystać z tego profilu.
Wywołaj metodę Create tworzenia profilu na serwerze.
Gdy profil pojawi się na serwerze, możesz go dostosować, dodając, usuwając lub zmieniając wartości parametrów agenta replikacyjnego.
Aby przypisać profil do istniejącego zadania agenta replikacyjnego, wywołaj metodę AssignToAgent . Przekaż nazwę bazy danych dystrybucji dla distributionDBName oraz ID zadania dla agentID.
Aby zmodyfikować istniejący profil agenta
Utworzenie połączenia z Dystrybutorem, używając instancji ServerConnection tej klasy.
Utwórz wystąpienie klasy ReplicationServer. Przekaż ServerConnection obiekt utworzony w kroku 1.
Wywołaj metodę LoadProperties . Jeśli ta metoda zwraca false, sprawdź, czy dystrybutor istnieje.
Wywołaj metodę EnumAgentProfiles . Przekaż wartość AgentType, aby zawęzić zwrócone profile do określonego typu agenta replikacji.
Uzyskaj pożądany AgentProfile obiekt z zwróconego ArrayList, gdzie właściwość Name obiektu odpowiada nazwie profilu.
Wywołaj jedną z następujących metod elementu AgentProfile, aby zmienić profil:
AddParameter - dodaje wspierany parametr do profilu, gdzie nazwa to nazwa parametru agenta replikacji, a wartość to określona wartość. Aby wymienić wszystkie obsługiwane parametry agenta dla danego typu agenta, wywołaj metodę EnumParameterInfo . Ta metoda zwraca liczbę ArrayListAgentProfileParameterInfo obiektów reprezentujących wszystkie obsługiwane parametry.
RemoveParameter - usuwa istniejący parametr z profilu, gdzie nazwa to nazwa parametru agenta replikacyjnego. Aby wymienić wszystkie aktualne parametry agenta zdefiniowane dla profilu, wywołaj metodę EnumParameters . Ta metoda zwraca obiekty ArrayListAgentProfileParameter reprezentujące istniejący parametr dla tego profilu.
ChangeParameter - zmienia ustawienie istniejącego parametru w profilu, gdzie nazwa to nazwa parametru agenta, a newValue to wartość, na którą parametr jest zmieniany. Aby wymienić wszystkie aktualne parametry agenta zdefiniowane dla profilu, wywołaj metodę EnumParameters . Ta metoda zwraca obiekty ArrayListAgentProfileParameter reprezentujące istniejący parametr dla tego profilu. Aby wymienić wszystkie obsługiwane ustawienia parametrów agenta, wywołaj metodę EnumParameterInfo . Ta metoda zwraca liczbę ArrayListAgentProfileParameterInfo obiektów reprezentujących obsługiwane wartości dla wszystkich parametrów.
Aby usunąć profil agenta
Utworzenie połączenia z Dystrybutorem, używając instancji ServerConnection tej klasy.
Utwórz wystąpienie klasy AgentProfile. Ustaw nazwę profilu dla Name oraz ServerConnection z kroku 1 dla ConnectionContext.
Wywołaj metodę LoadProperties . Jeśli ta metoda zwraca false, to albo podana nazwa była błędna, albo profil nie istnieje na serwerze.
Sprawdź, czy właściwość Type jest ustawiona na User, co wskazuje na profil klienta. Nie należy usuwać profilu, który ma wartość System dla Type.
Wywołaj metodę Remove usunięcia profilu zdefiniowanego przez użytkownika reprezentowanego przez ten obiekt z serwera.
Działania następcze: po zmianie parametrów agenta
Zmiany parametrów agenta zostaną zastosowane przy następnym uruchomieniu agenta. Jeśli agent działa w sposób ciągły, musisz zatrzymać i ponownie uruchomić agenta. Począwszy od SQL Server 2017 CU3, niektóre zmiany parametrów agentów wchodzą w życie bez konieczności restartowania agentów.