如何查看和修改复制的安全设置(复制 Transact-SQL 编程)

复制所需的安全帐户设置(登录名和密码)是在创建发布和订阅时定义的。 稍后可使用复制存储过程更改这些设置。 所使用的存储过程将取决于代理的类型和服务器连接的类型。

注意注意

出于安全考虑,将在复制存储过程返回的结果集中掩盖密码的实际值。

安全说明安全说明

在以下所有过程中,如果可能,请在运行时提示用户输入安全凭据。 如果将凭据存储在脚本文件中,则必须确保文件的安全以防受到未经授权的访问。

在复制服务器上更改存储密码的所有实例

  1. 在复制拓扑中的服务器上,对 master 数据库执行 sp_changereplicationserverpasswords。 为 @login 指定要更改其密码的 Microsoft Windows 帐户或 MicrosoftSQL Server 登录名,并为 @password 指定该帐户或登录名的新密码。 连接到该拓扑中的其他服务器时,此操作会更改该服务器上所有代理使用的密码的每个实例。

    注意注意

    若要只更改该拓扑中特定服务器(如分发服务器或订阅服务器)的连接的登录名和密码,请为 @server 指定此服务器的名称。

  2. 在复制拓扑中必须更新密码的每台服务器上重复执行步骤 1。

    注意注意

    更改复制密码后,必须停止并重新启动使用该密码的每个代理,这样代理的更改才能生效。

更改快照代理的安全设置

  1. 在发布服务器上,执行 sp_helppublication_snapshot,并指定 @publication。 此操作将返回快照代理的当前安全设置。

  2. 在发布服务器上,执行 sp_changepublication_snapshot,并指定 @publication 和下列要更改的一个或多个安全设置:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请指定 @job_login@job_password

    • 若要更改连接到发布服务器时所用的安全模式,请将 @publisher_security_mode 的值指定为 10

    • 将连接到发布服务器时所用的安全模式从 1 更改为 0 时,或者更改用于此连接的 SQL Server 登录名时,请指定 @publisher_login@publisher_password

    安全说明安全说明

     使用远程分发服务器配置发布服务器时,为所有参数提供的值(包括 job_login 和 job_password)都会以纯文本方式发送到该分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接

更改日志读取器代理的安全设置

  1. 在发布服务器上,执行 sp_helplogreader_agent,并指定 @publisher。 此操作将返回日志读取器代理的当前安全设置。

  2. 在发布服务器上,执行 sp_changelogreader_agent,并指定 @publication 和下列要更改的一个或多个安全设置:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请指定 @job_login@job_password

    • 若要更改连接到发布服务器时所用的安全模式,请将 @publisher_security_mode 的值指定为 10

    • 将连接到发布服务器时所用的安全模式从 1 更改为 0 时,或者更改用于此连接的 SQL Server 登录名时,请指定 @publisher_login@publisher_password

    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。

    安全说明安全说明

     使用远程分发服务器配置发布服务器时,为所有参数提供的值(包括 job_login 和 job_password)都会以纯文本方式发送到该分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接

更改推送订阅的分发代理的安全设置

  1. 在发布服务器上,对发布数据库执行 sp_helpsubscription,并指定 @publication@subscriber。 此操作将返回订阅属性,包括运行在分发服务器上的分发代理的安全设置。

  2. 在发布服务器上,对发布数据库执行 sp_changesubscription,并指定 @publication@subscriber@subscriber_db,将 @article 的值指定为 all,为 @property 指定安全属性的名称,并为 @value 指定该属性的新值。

  3. 对下列每个要更改的安全属性重复步骤 2:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请为 @property 指定 distrib_job_password 值,并为 @value 指定新密码。 更改帐户本身时,请重复步骤 2,为 @property 指定 distrib_job_login 值,并为 @value 指定新的 Windows 帐户。

    • 若要更改连接到订阅服务器时所用的安全模式,请为 @property 指定 subscriber_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将订阅服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 subscriber_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 subscriber_login 值,并为 @value 指定新登录名。

    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。

    安全说明安全说明

     使用远程分发服务器配置发布服务器时,为所有属性(包括 distrib_job_logindistrib_job_password)提供的值都将以纯文本格式发送到分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接

更改请求订阅的分发代理的安全设置

  1. 在发布服务器上,执行 sp_helppullsubscription,并指定 @publication。 此操作将返回订阅属性,包括运行在订阅服务器上的分发代理的安全设置。

  2. 在订阅服务器上的订阅数据库中,执行 sp_change_subscription_properties,并指定 @publisher@publisher_db@publication,为 @property 指定安全属性的名称,为 @value 指定该属性的新值。

  3. 对下列每个要更改的安全属性重复步骤 2:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请为 @property 指定 distrib_job_password 值,并为 @value 指定新密码。 更改帐户本身时,请重复步骤 2,为 @property 指定 distrib_job_login 值,并为 @value 指定新的 Windows 帐户。

    • 若要更改连接到分发服务器时所用的安全模式,请为 @property 指定 distributor_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将分发服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 distributor_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 distributor_login 值,并为 @value 指定新登录名。

    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。

更改推送订阅的合并代理的安全设置

  1. 在发布服务器上,对发布数据库执行 sp_helpmergesubscription,并指定 @publication@subscriber@subscriber_db。 此操作将返回订阅属性,包括运行在分发服务器上的合并代理的安全设置。

  2. 在发布服务器上,对发布数据库执行 sp_changemergesubscription,并指定 @publication@subscriber@subscriber_db,为 @property 指定安全属性的名称,为 @value 指定该属性的新值。

  3. 对下列每个要更改的安全属性重复步骤 2:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请为 @property 指定 merge_job_password 值,并为 @value 指定新密码。 更改帐户本身时,请重复步骤 2,为 @property 指定 merge_job_login 值,并为 @value 指定新的 Windows 帐户。

    • 若要更改连接到订阅服务器时所用的安全模式,请为 @property 指定 subscriber_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将订阅服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 subscriber_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 subscriber_login 值,并为 @value 指定新登录名。

    • 若要更改连接到发布服务器时所用的安全模式,请为 @property 指定 publisher_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将发布服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 publisher_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 publisher_login 值,并为 @value 指定新登录名。

    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。

    安全说明安全说明

     使用远程分发服务器配置发布服务器时,为所有属性(包括 merge_job_loginmerge_job_password)提供的值都将以纯文本格式发送到分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接

更改请求订阅的合并代理的安全设置

  1. 在订阅服务器上,执行 sp_helpmergepullsubscription,并指定 @publication。 此操作将返回订阅属性,包括运行在订阅服务器上的合并代理的安全设置。

  2. 在订阅服务器上的订阅数据库中,执行 sp_change_subscription_properties,并指定 @publisher@publisher_db@publication,为 @property 指定安全属性的名称,为 @value 指定该属性的新值。

  3. 对下列每个要更改的安全属性重复步骤 2:

    • 若要更改代理运行时所用的 Windows 帐户或只更改此帐户的密码,请为 @property 指定 merge_job_password 值,并为 @value 指定新密码。 更改帐户本身时,请重复步骤 2,为 @property 指定 merge_job_login 值,并为 @value 指定新的 Windows 帐户。

    • 若要更改连接到分发服务器时所用的安全模式,请为 @property 指定 distributor_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将分发服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 distributor_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 distributor_login 值,并为 @value 指定新登录名。

    • 若要更改连接到发布服务器时所用的安全模式,请为 @property 指定 publisher_security_mode 值,并将 @value 的值指定为 1(Windows 集成身份验证)或 0(SQL Server 身份验证)。

    • 将发布服务器的安全模式更改为 SQL Server 身份验证时,或者如果更改 SQL Server 身份验证的登录信息,请为 @property 指定 publisher_password 值,并为 @value 指定新密码。 重复步骤 2,为 @property 指定 publisher_login 值,并为 @value 指定新登录名。

    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。

更改快照代理的安全设置以为订阅服务器生成筛选快照

  1. 在发布服务器上,执行 sp_helpdynamicsnapshot_job,并指定 @publication。 在结果集中,记下要更改的订阅服务器分区的 job_name 值。

  2. 在发布服务器上,执行 sp_changedynamicsnapshot_job,并指定 @publication,为 @dynamic_snapshot_jobname 指定在步骤 1 中获取的值,为 @job_password 指定新密码,或者为 @job_login@job_password 指定代理运行时所用 Windows 帐户的登录名和密码。

    安全说明安全说明

     使用远程分发服务器配置发布服务器时,为所有参数提供的值(包括 job_login 和 job_password)都会以纯文本方式发送到该分发服务器。 在执行此存储过程之前,应该对发布服务器及其远程分发服务器之间的连接进行加密。 有关详细信息,请参阅加密与 SQL Server 的连接

更改队列读取器代理的安全设置

  1. 在分发服务器上,执行 sp_helpqreader_agent。 此操作将返回队列读取器代理运行时所用的当前 Windows 帐户。

    • 在分发服务器上,执行 sp_changeqreader_agent,并为 @job_login@job_passwsord 指定 Windows 帐户设置。
    注意注意

    更改代理登录名或密码之后,必须先停止并重新启动代理,然后更改才能生效。 每个分发数据库都有一个队列读取器代理。 更改代理的安全设置会影响使用此分发数据库的所有发布服务器上所有发布的设置。

  2. 对于订阅,队列读取器代理使用与分发代理相同的连接上下文与订阅服务器建立连接。

更改立即更新订阅服务器连接到发布服务器时所用的安全模式

  • 在订阅服务器上的订阅数据库中,执行 sp_link_publication。 指定 @publisher@publication,为 @publisher_db 指定发布数据库的名称,并为 @security_mode 指定下列值之一:

    • 0,表示在发布服务器上执行更新时使用 SQL Server 身份验证。 此选项需要为 @login@password 指定发布服务器上的有效登录名。

    • 1,表示连接到发布服务器时使用在订阅服务器上执行更改的用户的安全上下文。 有关与此安全模式相关的限制,请参阅 sp_link_publication

    • 2,表示使用现有的、通过 sp_addlinkedserver (Transact-SQL) 创建的、用户定义的链接服务器登录名。

更改远程分发服务器的密码

  1. 在分发服务器上,对分发数据库执行 sp_changedistributor_password,并为 @password 指定此登录名的新密码。

    重要说明重要提示

    不要直接更改 distributor_admin 的密码。

  2. 在使用此远程分发服务器的每个发布服务器上,执行 sp_changedistributor_password,并为 @password 指定步骤 1 中的密码。