如何:使用複寫代理程式設定檔 (複寫 Transact-SQL 程式設計)

代理程式設定檔是用來定義代理程式作業建立時的預設值。每一個代理程式都有預設的設定檔,有些代理程式還有其他預先定義的設定檔。您可以使用複寫預存程序建立使用者定義的設定檔。如需有關代理程式設定檔的詳細資訊,請參閱<複寫代理程式設定檔>。

[!附註]

您不應該修改或刪除預先定義的設定檔。代理程式參數變更會在代理程式下次啟動時生效。如果代理程式連續執行,則必須停止代理程式,然後重新啟動它。

若要建立新的代理程式設定檔

  1. 在「散發者」端執行 sp_add_agent_profile (Transact-SQL)。指定 @name、針對 @profile_type 指定 1 的值,並針對 @agent_type 指定下列其中一個值:

    如果這個設定檔將成為其複寫代理程式類型的新預設設定檔,請針對 @default 指定 1 的值。新設定檔的識別碼會使用 @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_profile (Transact-SQL)。針對 @profile_id 指定步驟 1 中的設定檔識別碼、針對 @property 指定要變更的參數名稱,並針對 @value 指定參數的新值。

    [!附註]

    您無法變更現有的代理程式設定檔,使其成為代理程式的預設設定檔,而必須建立新的預設檔當做預設設定檔,如前述程序所示。

  4. 若要從設定檔移除參數,請執行 sp_drop_agent_parameter (Transact-SQL)。針對 @profile_id 指定步驟 1 中的設定檔識別碼,並針對 @parameter_name 指定要移除之參數的名稱。

  5. 若要在設定檔中加入新參數,您必須執行下列動作:

    • 查詢「散發者」端的 MSagentparameterlist (Transact-SQL) 資料表,以判斷可針對每個代理程式類型所設定的設定檔參數。

    • 在「散發者」端執行 sp_add_agent_parameter (Transact-SQL)。針對 @profile_id 指定步驟 1 中的設定檔識別碼、針對 @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. 如果代理程式是從代理程式作業啟動的,請編輯啟動代理程式的作業步驟,在 -ProfileName 命令列參數之後指定在步驟 1 中取得的 profile_name 值。如需詳細資訊,請參閱<如何:檢視並修改複寫代理程式命令提示字元參數 (SQL Server Management Studio)>。

  3. 從命令提示字元啟動代理程式時,在 -ProfileName 命令列參數之後指定在步驟 1 中取得的 profile_name 值。

範例

此範例會針對名為 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