更改發(fā)布的屬性。此存儲過程在發(fā)布服務(wù)器的發(fā)布數(shù)據(jù)庫上執(zhí)行。
sp_changepublication [ [ @publication = ] 'publication' ]
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[@publication =] 'publication'
是發(fā)布名。publication 的數(shù)據(jù)類型為 sysname,默認值為 NULL。
[@property =] 'property'
是要更改的發(fā)布屬性。property 的數(shù)據(jù)類型為 nvarchar(20),可以是下列值之一。
值 | 描述 |
---|---|
taskid | 使用 sp_addtask 創(chuàng)建的唯一調(diào)度任務(wù) ID。僅為保持向后兼容性。 |
sync_method | 同步方法??梢允牵?br /> native = 生成所有表的本機模式大容量復(fù)制輸出 |
repl_freq | 復(fù)制頻率??梢允?continuous(提供所有基于日志的事務(wù)輸出)或 snapshot(只生成已調(diào)度同步事件)。 |
description | 用于描述發(fā)布的可選項。 |
status | 發(fā)布狀態(tài)。可以是 inactive(第一次創(chuàng)建訂閱時,發(fā)布數(shù)據(jù)不能由訂閱服務(wù)器使用)或 active(發(fā)布數(shù)據(jù)可由訂閱服務(wù)器立即使用)。 |
independent_agent | 指定是否有用于該發(fā)布的單獨的分發(fā)代理程序。如果是 true,則表示有用于該發(fā)布的獨立分發(fā)代理程序。如果是 false,則發(fā)布使用共享分發(fā)代理程序,且每個發(fā)布服務(wù)器數(shù)據(jù)庫/訂閱服務(wù)器數(shù)據(jù)庫對都有共享代理程序。 |
immediate_sync | 指定是否每次快照代理程序運行時都創(chuàng)建發(fā)布的同步文件。如果是 true,則表示每次快照代理程序運行時都創(chuàng)建或重新創(chuàng)建同步文件。如果在完成訂閱之前已完成一次快照代理程序,則訂閱服務(wù)器能夠在接收訂閱之后立即接收同步文件。新訂閱獲得最后一次執(zhí)行快照代理程序所生成的最新同步文件。要想使 immediate_sync 為 true,independent_agent 必須為 true。如果是 false,則表示只有存在新訂閱時才創(chuàng)建同步文件。訂閱服務(wù)器不能在接收訂閱之后接收同步文件,直到啟動并完成快照代理程序。 |
enabled_for_internet | 指定是否為 Internet 啟用發(fā)布。如果是 true,則表示該發(fā)布的同步文件放在 \Repldata\Ftp 目錄內(nèi)。 |
allow_push | 指定是否可以為給定發(fā)布創(chuàng)建強制訂閱。如果是 true,則表示允許在該發(fā)布上使用強制訂閱。 |
allow_pull | 指定是否可以為給定發(fā)布創(chuàng)建請求訂閱。如果是 true,則表示允許在該發(fā)布上使用請求訂閱。 |
allow_anonymous | 指定是否可以為給定發(fā)布創(chuàng)建匿名訂閱。如果是 true,則 immediate_sync 也必須設(shè)置為 true。如果是 true,則表示允許在該發(fā)布上使用匿名訂閱。 |
retention | 訂閱活動的保持期(以小時為單位)。如果訂閱在保持期內(nèi)不活動,則將其刪除。 |
snapshot_in_ defaultfolder | 指定是否將快照文件存儲在默認文件夾中。snapshot_in_defaultfolder 的數(shù)據(jù)類型為 nvarchar(5)。如果是 true,則可以在默認文件夾中找到快照文件。如果是 false,則表示快照文件已存儲在 alt_snapshot_folder 所指定的備用位置中。備用位置可以在另一臺服務(wù)器、一個網(wǎng)絡(luò)驅(qū)動器或可移動媒體(如光盤或可移動磁盤)上。也可以將快照文件保存到文件傳輸協(xié)議 (FTP) 站點以供訂戶以后檢索。注意該參數(shù)可以為 true,并且在 @alt_snapshot_folder 參數(shù)中仍有位置。該組合指定將快照文件同時存儲在默認位置和備用位置。 |
alt_snapshot_folder | 指定快照的備用文件夾位置。alternate_snapshot_folder 的數(shù)據(jù)類型為 nvarchar(255)。 |
pre_snapshot_script | 指定指向 .sql 文件位置的指針。pre_snapshot_script 的數(shù)據(jù)類型為 nvarchar(255)。在訂閱服務(wù)器上應(yīng)用快照時,分發(fā)代理程序?qū)⒃谶\行任何復(fù)制的對象腳本之前運行快照前腳本。 |
post_snapshot_script | 指定指向 .sql 文件位置的指針。post_snapshot_script 的數(shù)據(jù)類型為 nvarchar(255)。分發(fā)代理程序?qū)⒃诔跏纪竭^程中已應(yīng)用所有其它復(fù)制的對象腳本和數(shù)據(jù)之后才運行快照后腳本。 |
compress_snapshot | 指定將寫入 @alt_snapshot_folder 位置的快照壓縮成 Microsoft® CAB 格式。compress_snapshot 的數(shù)據(jù)類型為 nvarchar(5),默認設(shè)置為 FALSE。false 指定不壓縮快照;而 true 指定將壓縮快照。不能壓縮默認文件夾中的快照。 |
ftp_address | 是分發(fā)服務(wù)器 FTP 服務(wù)的網(wǎng)絡(luò)地址。ftp_address 的數(shù)據(jù)類型為 sysname。指定供訂閱服務(wù)器的分發(fā)代理程序或合并代理程序獲取的發(fā)布快照文件的位置。因為要為每個發(fā)布存儲該屬性,所以每個發(fā)布可以有不同的 ftp_address。發(fā)布必須支持通過 FTP 傳播快照。有關(guān)更多信息,請參見配置發(fā)布以允許訂閱服務(wù)器使用 FTP 檢索快照。 |
ftp_port | 是分發(fā)服務(wù)器的 FTP 服務(wù)的端口號。ftp_port 的數(shù)據(jù)類型為 int。默認設(shè)置為 21。指定供訂閱服務(wù)器的分發(fā)代理程序或合并代理程序獲取的發(fā)布快照文件的位置。因為要為每個發(fā)布存儲該屬性,所以每個發(fā)布可以有自己的 ftp_port。 |
ftp_subdirectory | 如果發(fā)布支持通過 FTP 傳播快照,指定可供訂閱服務(wù)器的分發(fā)代理程序或合并代理程序獲取的快照文件的位置。ftp_subdirectory 的數(shù)據(jù)類型為 nvarchar(255)。因為要為每個發(fā)布存儲該屬性,所以每個發(fā)布可以有自己的 ftp_subdirctory,或選擇沒有子目錄,如 NULL 值表示的那樣。 |
ftp_login | 是用于連接到 FTP 服務(wù)的用戶名。ftp_login 的數(shù)據(jù)類型為 sysname。允許使用值 ANONYMOUS。 |
ftp_password | 是用于連接到 FTP 服務(wù)的用戶密碼。ftp_password 的數(shù)據(jù)類型為 sysname。 |
conflict_policy | 指定在使用排隊更新訂閱服務(wù)器選項時應(yīng)遵從的沖突解決策略。conflict_policy 的數(shù)據(jù)類型為 nvarchar(100),可以是下列值之一: pub wins = 發(fā)布服務(wù)器在沖突中取勝。 只有在沒有活動訂閱時才能更改該屬性。 |
centralized_conflicts | 指定是否在發(fā)布服務(wù)器上存儲沖突記錄。centralized_conflicts 的數(shù)據(jù)類型為 nvarchar(5)。如果是 true,則表示沖突記錄存儲在發(fā)布服務(wù)器上。如果是 false,則在引起沖突的發(fā)布服務(wù)器和訂閱服務(wù)器上都存儲沖突記錄。 只有在沒有活動訂閱時才能更改該屬性。 |
conflict_retention | 指定沖突保持期(以天為單位)。conflict_retention 的數(shù)據(jù)類型為 int。默認保持期一般為 14 天。 |
queue_type | 指定使用的隊列類型。queue_type 的數(shù)據(jù)類型為 nvarchar(10),可以是下列值之一: msmq = 使用 Microsoft 消息隊列存儲事務(wù)。 只有在沒有活動訂閱時才能更改該屬性。 |
publish_to_ ActiveDirectory | 指定是否將發(fā)布信息發(fā)布到 Microsoft Active Directory™。add_to_active_directory 的數(shù)據(jù)類型為 nvarchar(10)。只有在運行 Microsoft Windows® 2000 操作系統(tǒng)的服務(wù)器上才能使用該功能。有效值為: true = 發(fā)布發(fā)布信息。 |
NULL(默認值) |
[@value =] 'value'
是新屬性值。value 的數(shù)據(jù)類型為 nvarchar(255),默認設(shè)置為 NULL。
[@force_invalidate_snapshot = ] force_invalidate_snapshot
確認此存儲過程采取的操作可能使現(xiàn)有快照無效。force_invalidate_snapshot 的數(shù)據(jù)類型為 bit,默認設(shè)置為 0。0 指定對項目的更改不會導(dǎo)致快照無效。如果存儲過程檢測到更改確實需要新快照,則會發(fā)生錯誤,且不會進行任何更改。而 1 指定對項目所做的更改可能導(dǎo)致快照無效,而且如果現(xiàn)有訂閱需要新的快照,則提供適當?shù)臋?quán)限,使現(xiàn)有快照被標記為廢棄并生成新快照。
[@force_reinit_subscription = ] force_reinit_subscription
確認此存儲過程采取的操作可能要求重新初始化現(xiàn)有的訂閱。force_reinit_subscription 的數(shù)據(jù)類型為 bit,默認設(shè)置為 0。0 指定對項目的更改不會導(dǎo)致重新初始化訂閱。如果存儲過程檢測到更改需要重新初始化訂閱,則會發(fā)生錯誤,且不會進行任何更改。而 1 指定對項目的更改將導(dǎo)致重新初始化現(xiàn)有的訂閱,且提供使訂閱重新初始化發(fā)生的權(quán)限。
0(成功)或 1(失?。?/P>
sp_changepublication 用于快照復(fù)制和事務(wù)復(fù)制。
若要使用 @publish_to_Active_Directory 參數(shù)列出 Active Directory 中的發(fā)布對象,必須已經(jīng)在 Active Directory 中創(chuàng)建了 SQL Server 對象。有關(guān)更多信息,請參見 Active Directory 服務(wù)。
只有 sysadmin 固定服務(wù)器角色成員或 db_owner 固定數(shù)據(jù)庫角色成員才能執(zhí)行 sp_changepublication。
相關(guān)文章