最佳化參數化資料列篩選
適用於:SQL Server
本主題說明如何使用 SQL Server Management Studio 或 Transact-SQL,在 SQL Server 中將參數化資料列篩選條件最佳化。
本主題內容
開始之前:
若要最佳化參數化資料列篩選,請使用:
開始之前
建議
在使用參數化篩選器時,您可以在建立發行集時,藉由指定 [使用資料分割群組] 選項或 [保留資料分割變更] 選項來控制合併式複寫要如何處理篩選。 這兩個選項都可以透過在發行集資料庫中儲存其他中繼資料,以提升具有篩選發行項之發行集的同步處理效能。 您可以在建立發行項時,藉由設定 [資料分割選項] 來控制要如何在訂閱者之間共用資料。 如需有關這些需求的詳細資訊,請參閱< 參數化資料列篩選器>。
對於 SQL Server Compact 訂閱者,必須將 keep_partition_changes 設為 true,才能確保正確傳播刪除。 設為 false 時,訂閱者所擁有的資料列可能比預期多。
使用 SQL Server Management Studio
下列設定可用於最佳化參數化資料列篩選器:
資料分割選項
您可以在 [發行項屬性 - <發行項>] 對話方塊的 [屬性] 頁面上,或是在 [新增篩選] 對話方塊中,設定這個選項。 [新增發行集精靈] 和 [發行集屬性 - <發行集>] 對話方塊中都有提供這兩個對話方塊。 [發行項屬性 - <發行項>] 對話方塊還可讓您針對這個選項,指定 [新增篩選] 對話方塊中未提供的其他值。
預先計算資料分割
依預設,如果發行集中的發行項符合一組需求,則此選項要設定為 [True] 。 如需這些需求的詳細資訊,請參閱使用預先計算的資料分割最佳化參數化篩選效能。 您可以在 [發行集屬性 - <發行集>] 對話方塊的 [訂閱選項] 頁面上,修改這個選項。
最佳化同步處理
只有在 [預先計算資料分割] 設定為 [False] 時,此選項才應設定為 [True] 。 您可以在 [發行集屬性 - <發行集>] 對話方塊的 [訂閱選項] 頁面上,設定這個選項。
如需使用 [新增發行集精靈] 並存取 [發行集屬性 - <發行集>] 對話方塊的詳細資訊,請參閱建立發行集和檢視和修改發行集屬性。
若要在加入篩選或編輯篩選對話方塊中設定資料分割選項
在 [新增發行集精靈] 的 [篩選資料表的資料列] 頁面上,或是在 [發行集屬性 - <發行集>] 對話方塊的 [篩選資料列] 頁面上,按一下 [新增],然後按一下 [新增篩選]。
建立參數化篩選。 如需詳細資訊,請參閱 針對合併發行項定義及修改參數化資料列篩選。
選取符合資料在訂閱者之間共用資料方式的選項:
這個資料表中的一個資料列會提供給多個訂閱
這個資料表中的一個資料列只會提供給一個訂閱
若您選取 [這個資料表中的一個資料列只會提供給一個訂閱] ,合併式複寫可藉由儲存和處理較少中繼資料來將效能最佳化。 不過您必須確定資料分割方式不會將資料列複寫至多個訂閱者。 如需進一步資訊,請參閱主題< 參數化資料列篩選器>中的「設定資料分割選項」。
選取 [確定]。
如果您在 [發行集屬性 - <發行集>] 對話方塊中,請按一下 [確定] 以儲存並關閉對話方塊。
在 [發行項屬性 - <發行項>] 對話方塊中設定資料分割選項
在 [新增發行集精靈] 的 [發行項] 頁面上,或是在 [發行集屬性 - <發行集>] 對話方塊中,選取一個資料表,然後按一下 [發行項屬性]。
按一下 [設定反白顯示資料表發行項的屬性] 或 [設定所有資料表發行項的屬性] 。
在 [發行項屬性 - <發行項>] 對話方塊之 [屬性] 索引標籤的 [目的地物件] 區段中,指定 [資料分割選項] 的下列其中一個值:
重疊
重疊,不允許變更資料分割外的資料
不重疊,單一訂閱
不重疊,共用於訂閱之間
如需這些選項及其如何與 [加入篩選] 和 [編輯篩選] 對話方塊中可用之選項相關聯的詳細資訊,請參閱< 參數化資料列篩選器>的「設定資料分割選項」一節。
選取 [確定]。
如果您在 [發行集屬性 - <發行集>] 對話方塊中,請按一下 [確定] 以儲存並關閉對話方塊。
若要設定預先計算資料分割
在 [發行集屬性 - <發行集>] 對話方塊的 [訂閱選項] 頁面上,選取 [預先計算資料分割] 選項的值。 在下列情況下,該屬性是唯讀的:
發行集不符合預先計算資料分割的需求。
尚未產生此發行集的快照集。 在此情況下,選項會顯示 [建立快照時會自動設定] 的值。
選取 [確定]。
若要設定最佳化同步處理
在 [發行屬性 - <發行集>] 對話方塊的 [發行集選項] 頁面上,針對 [最佳化同步處理] 選項,請選取
True
的值。選取 [確定]。
使用 TRANSACT-SQL
如需 @keep_partition_changes
和 @use_partition_groups
的篩選選項定義,請參閱 sp_addmergepublication。
在建立新的發行集時指定合併篩選最佳化
在發行集資料庫的發行者上,執行 sp_addmergepublication。 指定
@publication
,並針對下列其中一個參數指定true
的值:@use_partition_groups
- 最高效能最佳化,前提是發行項符合預先計算的資料分割需求。 如需詳細資訊,請參閱使用預先計算的資料分割最佳化參數化篩選效能。@keep_partition_changes
- 當無法使用預先計算的資料分割時,請使用此最佳化。
加入此發行集的快照集作業。 如需詳細資訊,請參閱建立發行集。
在發行集資料庫的發行者上,執行 sp_addmergearticle並指定下列參數:
@publication
- 步驟 1 中發行集的名稱。@article
- 發行項的名稱@source_object
- 發行的資料庫物件。@subset_filterclause
- 用來以水平方式篩選發行項的選擇性參數化篩選子句。@partition_options
- 經篩選發行項的資料分割選項。
針對發行集中的每一個發行項重複步驟 3。
(選擇性) 在發行集資料庫的發行者上,執行 sp_addmergefilter ,以定義兩個發行項之間的聯結篩選。 如需詳細資訊,請參閱 定義和修改合併發行項之間的聯結篩選。
檢視及修改現有發行集的合併篩選行為
(選擇性) 在發行集資料庫的發行者上,執行 sp_helpmergepublication,指定
@publication
。 請注意結果集中keep_partition_changes
和use_partition_groups
的值。(選擇性) 在發行集資料庫的發行者上,執行 sp_changemergepublication。 針對
@property
指定use_partition_groups
的值,並為@value
指定true
或false
值。(選擇性) 在發行集資料庫的發行者上,執行 sp_changemergepublication。 針對
@property
指定keep_partition_changes
的值,並為@value
指定true
或false
值。注意
當啟用
keep_partition_changes
時,您必須先停用use_partition_groups
,並針對@force_reinit_subscription
指定1
的值。(選擇性) 在發行集資料庫的發行者上,執行 sp_changemergearticle。 針對
@property
指定partition_options
的值,並針對@value
指定適當的值。 如需這些篩選選項的定義,請參閱 sp_addmergearticle 。(選擇性) 在必要時,啟動快照集代理程式來重新產生快照集。 如需哪些變更需要產生新快照集的資訊,請參閱變更發行集與發行項屬性。
另請參閱
在合併發行項之間自動產生一組聯結篩選 (SQL Server Management Studio)
針對合併發行項定義及修改參數化資料列篩選
參數化資料列篩選器
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應