共用方式為


設定快照屬性 (複製 Transact-SQL 程式設計)

快照集屬性可以使用複寫預存程式以程式設計方式定義和修改,其中所使用的預存程式取決於發行集的類型。

在建立快照或交易式發行集時配置快照屬性

  1. 在發行者上,執行 sp_addpublication。 為 @publication 指定發行集名稱,為 @repl_freq 設定 快照連續 值,以及以下一個或多個快照相關參數:

    • @alt_snapshot_folder - 如果從此位置而非或除了快照預設資料夾存取此出版物的快照集,請指定路徑。

    • @compress_snapshot - 如果替代快照集資料夾中的快照集檔案以Microsoft CAB 檔案格式壓縮,請指定 true 的值。

    • @pre_snapshot_script - 指定 .sql 檔案的檔名和完整路徑,該檔案將在初始化時於訂閱者端執行,並在套用初始快照集之前執行。

    • @post_snapshot_script - 指定套用初始快照集之後,將在訂閱者端執行的 .sql 檔案的檔名和完整路徑。

    • @snapshot_in_defaultfolder - 如果快照僅在非預設位置可用,請指定 false 的值。

    如需建立發行集的詳細資訊,請參閱 建立發行集

建立合併出版物時設定快照屬性

  1. 在發行者上,執行 sp_addmergepublication。 為@publication指定出版物名稱,為@repl_freq指定快照連續值,以及下列一個或多個快照相關參數:

    • @alt_snapshot_folder - 如果從該位置存取此發行集的快照集,而不是或除了快照集預設資料夾之外,請指定路徑。

    • @compress_snapshot - 如果替代快照集資料夾中的快照集檔案以 CAB 檔案格式壓縮,請指定 true 的值。

    • @pre_snapshot_script - 指定一個將在初始化時於訂閱者端執行的.sql 檔案的檔名和完整路徑,該檔案會在套用初始快照集之前執行。

    • @post_snapshot_script - 指定一個 .sql 檔案的檔名和完整路徑,該檔案將在套用初始快照後於訂閱者端初始化時執行。

    • @snapshot_in_defaultfolder - 如果快照僅在非預設位置可用,請指定 false 的值。

  2. 如需建立發行集的詳細資訊,請參閱 建立發行集

修改現有快照式或交易式發行集的快照集屬性

  1. 在發行集資料庫的發行者上,執行 sp_changepublication。 針對 @force_invalidate_snapshot 指定 1 的值,並針對 @property指定下列其中一個值:

    • alt_snapshot_folder -also 為 @value 指定替代快照集資料夾的新路徑。

    • compress_snapshot - 也針對 @value 指定 truefalse 的值,以指出替代快照集資料夾中的快照集檔案是否以 CAB 檔案格式壓縮。

    • pre_snapshot_script - 也針對 @value 指定在套用初始快照集之前,將在訂閱者端執行 之.sql 檔案的檔名和完整路徑。

    • post_snapshot_script - 也為 @value 指定要在套用初始快照之後於初始化期間,在訂閱者端執行的 .sql 文件的檔名和完整路徑。

    • snapshot_in_defaultfolder - 也指定 truefalse 的值,以指出快照集是否只能在非預設位置使用。

  2. (選擇性)在發行集資料庫的發行者上,執行 sp_changepublication_snapshot。 指定 @publication 和一或多個正在變更的排程或安全性認證參數。

    這很重要

    可能的話,會在執行階段提示使用者輸入安全性認證。 如果您必須將認證儲存在指令碼檔案中,則必須維護這個檔案的安全性,使他人無法在未獲授權的情況下擅自存取。

  3. 從命令提示字元執行 複寫快照集代理程式 ,或啟動快照集代理程式作業以產生新的快照集。 如需詳細資訊,請參閱 建立和套用初始快照集

修改現有合併式發行集的快照集屬性

  1. 在發行集資料庫的發行者環境中,執行 sp_changemergepublication。 針對 @force_invalidate_snapshot 指定 1 的值,並針對 @property指定下列其中一個值:

    • alt_snapshot_folder -also 為 @value 指定替代快照集資料夾的新路徑。

    • compress_snapshot - 也針對 @value 指定 truefalse 的值,以指出替代快照集資料夾中的快照集檔案是否以 CAB 檔案格式壓縮。

    • pre_snapshot_script - 也要為 @value 指定將在初始化期間於使用者端執行的 .sql 檔案的檔名和完整路徑,以便套用初始快照集前使用。

    • post_snapshot_script - 也要針對 @value 指定一個 .sql 檔案的檔名和完整路徑,此檔案將在初始快照套用完成後的初始化期間於訂閱者端執行。

    • snapshot_in_defaultfolder - 也指定 truefalse 的值,以指出快照集是否只能在非預設位置使用。

  2. 從命令提示字元執行 複寫快照集代理程式 ,或啟動快照集代理程式作業以產生新的快照集。 如需詳細資訊,請參閱 建立和套用初始快照集

範例

此範例會建立使用替代快照集資料夾和壓縮快照集的發行集。

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @owner AS sysname;
DECLARE @snapshot_share AS sysname;
SET @publicationDB = N'AdventureWorks2012'; 
SET @publication = N'AdvWorksSalesOrdersMergeAltSnapshot'; 
SET @article = N'SpecialOffer';
SET @owner = N'Sales';
SET @snapshot_share = '\\' + $(InstanceName) + '\AltSnapshotFolder';

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
    @dbname = @publicationDB, 
    @optname=N'merge publish',
    @value = N'true';

-- Create new merge publication with an alternate snapshot location. 
USE [AdventureWorks]
EXEC sp_addmergepublication 
-- required parameters
    @publication = @publication, 
    @snapshot_in_defaultfolder = N'false',
    @alt_snapshot_folder = @snapshot_share,
    @compress_snapshot = N'true';

-- Create the snapshot job for the publication.
EXEC sp_addpublication_snapshot 
    @publication = @publication,
    @job_login = $(Login),
    @job_password = $(Password);

-- Add an article.
EXEC sp_addmergearticle 
    @publication = @publication, 
    @article = @article, 
    @source_object = @article, 
    @type = N'table', 
    @source_owner = @owner, 
    @destination_owner = @owner;

-- Start the snapshot job.
EXEC sp_startpublication_snapshot
    @publication = @publication;
GO

另請參閱

其他快照資料夾位置
壓縮快照集
在套用快照之前和之後執行腳本
復寫系統預存程式概念
透過 FTP 傳輸快照集
變更出版物和文章屬性