如何使用复制代理配置文件(复制 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