Share via


具體化檢視原則

本文包含可在具體化檢視上設定的原則相關資訊。

保留和快取原則

具體化檢視具有 保留原則快取原則。 依預設,具體化檢視會衍生資料庫保留和快取原則。 您可以使用 保留原則管理命令快取原則管理命令來變更這些原則。

這兩個原則僅適用於具體化檢視的具體化部分。 如需 具體化元件差異部分之間差異的說明,請參閱 具體化檢視的運作方式。 例如,如果具體化檢視的快取原則設定為 7d,但其來源資料表的快取原則設定為 0d,則查詢具體化檢視時可能仍有磁碟遺漏。 發生此行為的原因是源數據表 (差異部分) 也會參與查詢。

具體化檢視的保留原則與來源資料表的保留原則無關。 如果需要來源記錄的期間較短,來源資料表的保留原則可能會比具體化視圖的保留原則短。 建議至少有幾天的最小保留原則,以及將來源資料表上的復原能力設定為 true。 此設定可讓您快速復原錯誤和用於診斷用途。

注意

不支援來源資料表上的零保留原則。

保留和快取原則都取決於分區建立時間。 記錄的最後一次更新會決定具體化檢視的範圍建立時間。

注意

對於檢視的具體化部分,具體化流程會嘗試將更新數量降至最低。 如果不需要在檢視中更新記錄,就不會更新。 例如,當具體化檢視是 take_any(*) 匯總時,相同群組索引鍵的新記錄將不會重新內嵌到檢視中,因此保留原則會由最早的記錄內嵌來擷取。

資料分割原則

您可以在具體化檢視上套用資料分割原則。 只有當大部分或全部的檢視查詢依具體化檢視的其中一個分組依據索引鍵進行篩選時,才建議在具體化檢視上設定資料分割原則。 這種情況常見於多租用戶解決方案中,其中其中一個具體化檢視的群組索引鍵是租用戶的標識碼 (,例如 、 tenantIdcustomerId) 。 如需詳細資訊,請參閱資料分割原則支援案例頁面。

如需用於變更具體化檢視資料分割原則的命令,請參閱資料分割原則命令

在具體化檢視上新增數據分割原則會增加具體化檢視中的範圍數目,併為具體化程式建立更多「工作」。 如需此行為原因的詳細資訊,請參閱 具體化檢視的運作方式中所述的範圍重建程式。

資料列層級安全性原則

您可以在具體化檢視上套用資料列層級安全性,但有幾項限制:

  • 此原則只能套用至具有具體化檢視表 arg_max () /arg_min () /take_any () 匯總函數,或當數據列層級安全性查詢依具體化檢視匯總索引鍵參考群組時。
  • 原則只會套用至檢視的具體化部分
    • 如果在具體化檢視的源數據表上未定義相同的數據列層級安全策略,則查詢具體化檢視可能會傳回原則應該隱藏的記錄。 發生這種情況是因為查詢具體化檢視也會查詢來源資料表。
    • 如果檢視是 arg_max () 或arg_min ( ) /take_any () ,建議您在源數據表和具體化檢視上定義相同的數據列層級安全策略。
  • arg_max () 或arg_min () /take_any () 具體化檢視的源數據表上定義數據列層級安全策略時,如果具體化檢視本身上沒有定義數據列層級安全策略,命令就會失敗。 失敗是為了要對使用者發出潛在資料洩漏的警示,因為具體化檢視可能會公開資訊。 若要緩和這個錯誤,請執行下列其中一個動作:
    • 在具體化檢視上定義資料列層級安全性原則。
    • 藉由將 allowMaterializedViewsWithoutRowLevelSecurity 屬性新增至變更原則命令,選擇忽略錯誤。 例如:
    .alter table SourceTable policy row_level_security enable with (allowMaterializedViewsWithoutRowLevelSecurity=true) "RLS_function"

如需在具體化檢視上設定資料列層級安全性原則的命令,請參閱 row_level_security 原則命令