時態表安全性

適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體

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

安全性原則

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

原則 描述
啟用/停用系統版本設定功能需要受影響物件上的最高權限 啟用和停用 SYSTEM_VERSIONING 都需要目前和歷程記錄資料表上的 CONTROL 權限。
無法直接修改歷程記錄資料 SYSTEM_VERSIONINGON 時,使用者就無法變更歷程記錄資料,而不論其在目前或歷程記錄資料表上的實際權限為何。 此限制同時包括資料和結構描述修改。 1
查詢歷史記錄資料需要歷程記錄資料表上的 SELECT 權限 在目前資料表具有 SELECT 權限的使用者在歷程記錄資料表上不會自動擁有 SELECT 權限。
稽核顯示以特定方式影響歷程記錄資料表的作業 目前資料表中的稽核設定不會自動套用至歷程記錄資料表。 必須針對歷程記錄資料表明確啟用稽核。 一旦啟用,對歷程記錄資料表的稽核就會定期擷取所有直接存取資料的嘗試 (不論其成功與否)。

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

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

目前資料表上的 DML 作業會顯示受影響的歷程記錄資料表,但 additional_information 會提供必要的內容 (DML 是 SYSTEM_VERSIONING 的結果)。

1 如果您具有目前資料表和歷程記錄資料表的 ALTER 權限,而且在目前資料表中捨棄資料行,則歷程記錄資料表中的相關聯資料行也會捨棄,即使 SYSTEM_VERSIONINGON 也是如此。

執行結構描述作業

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

不允許的 ALTER 結構描述作業

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

允許的 ALTER TABLE 作業

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

CREATE 時態表陳述式的安全性

功能 建立新的歷程記錄資料表 重複使用現有的歷程記錄資料表
所需權限 資料庫中的 CREATE TABLE 權限

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

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

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

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

功能 建立新的歷程記錄資料表 重複使用現有的歷程記錄資料表
所需權限 資料庫中的 CONTROL 權限。

資料庫中的 CREATE TABLE 權限。

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

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

SELECT 陳述式的安全性

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