時態表安全性

適用於:SQL Server 2016 (13.x) 及更新版本 Azure SQL DatabaseAzure SQL 受控執行個體

若要了解適用於時態表的安全性,請務必了解適用於時態表的安全性原則。 了解這些安全性原則之後,您就已經準備好深入了解關於 CREATE TABLEALTER TABLESELECT 陳述式的安全性。

安全性原則

下表描述適用於時態表的安全性原則︰

原則 描述
啟用/停用系統建立版本功能需要受影響物件上的最高權限 啟用和停用 SYSTEM_VERSIONING 需要目前和記錄資料表上的 CONTROL 權限
無法直接修改記錄資料 當 SYSTEM_VERSIONING 為 ON 時,使用者無法變更記錄資料,而不論其在目前或記錄資料表上的實際權限為何。 這包括資料和結構描述修改。
查詢記錄資料需要記錄資料表上的 SELECT 權限 只是因為使用者具備目前資料表上的 SELECT 權限,並不表示他們具有記錄資料表上的 SELECT 權限。
稽核介面作業會以特定方式來影響記錄資料表︰ 目前資料表中的稽核設定不會自動套用至歷程記錄資料表。 必須針對歷程記錄資料表明確啟用稽核。

一旦啟用,對歷程記錄資料表的稽核就會定期擷取所有直接存取資料的嘗試 (不論其成功與否)。

SELECT 搭配時態查詢延伸模組會顯示記錄資料表已受到該作業影響。

CREATE/ALTER 時態表也會公開在記錄資料表上發生的權限檢查資訊。 稽核檔案將包含記錄資料表的額外記錄。

目前資料表介面上的 DML 作業會影響記錄資料表,但 additional_info 會提供必要的內容 (DML 是 system_versioning 的結果)。

執行結構描述作業

將 SYSTEM_VERSIONING 設為 ON 時,結構描述修改作業會受到限制。

不允許的 ALTER 結構描述作業

作業 目前的資料表 記錄資料表
DROP TABLE 不允許 不允許
ALTER TABLE...SWITCH PARTITION 僅限 SWITCH IN (請參閱 對時態表進行資料分割) 僅限 SWITCH OUT (請參閱 對時態表進行資料分割)
ALTER TABLE...DROP PERIOD 不允許 -
ALTER TABLE...ADD PERIOD - 不允許

允許的 ALTER TABLE 作業

作業 目前 記錄
ALTER TABLE...REBUILD 允許 (獨立) 允許 (獨立)
CREATE INDEX 允許 (獨立) 允許 (獨立)
CREATE STATISTICS 允許 (獨立) 允許 (獨立)

建立時態表陳述式的安全性

功能 建立新的記錄資料表 重複使用現有的記錄資料表
必要的權限 資料庫的CREATE TABLE 權限

在建立目前和記錄資料表之結構描述上的ALTER 權限
資料庫的CREATE TABLE 權限

在將建立目前資料表之結構描述上的ALTER 權限。

記錄資料表上的CONTROL 權限會指定為建立時態表之 CREATE TABLE 陳述式的一部分
稽核 稽核顯示使用者已嘗試建立兩個物件。 作業可能失敗的原因是在資料庫中建立資料表的權限不足,或者變更任一個資料表的結構描述的權限不足。 稽核顯示時態表已建立。 作業可能失敗的原因是在資料庫中建立資料表的權限不足、變更時態表的結構描述的權限不足,或者在記錄資料表上的權限不足。

變更時態表 (SYSTEM_VERSIONING 為 ON/OFF) 陳述式的安全性

功能 建立新的記錄資料表 重複使用現有的記錄資料表
必要的權限 資料庫的CONTROL 權限

資料庫的CREATE TABLE 權限

在建立記錄資料表之結構描述上的ALTER 權限
已變更之原始資料表上的CONTROL 權限

記錄資料表上的CONTROL 權限會指定為 ALTER TABLE 陳述式的一部分
稽核 稽核顯示時態表已變更,同時已建立記錄資料表。 作業可能失敗的原因是在資料庫中建立資料表的權限不足、變更記錄資料表的結構描述的權限不足,或者修改時態表的權限不足。 稽核顯示時態表已變更,但作業需要記錄資料表的存取權。 作業可能失敗的原因是記錄資料表上的權限不足,或者目前資料表上的權限不足。

SELECT 陳述式的安全性

對於不會影響記錄資料表的SELECT 陳述式, SELECT 權限會維持不變。 對於會影響記錄資料表的 SELECT 陳述式,在目前資料表和記錄資料表上都需要 SELECT 權限。

另請參閱