如何:檢視和修改複寫安全性設定 (複寫 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 中的密碼。