時態表安全性
適用於:SQL Server 2016 (13.x) 和更新版本 Azure SQL 資料庫 Azure SQL 受控執行個體
若要了解適用於時態表的安全性,請務必了解適用於時態表的安全性原則。 了解這些安全性原則之後,您就做好準備,可深入了解關於 CREATE TABLE
、ALTER TABLE
及 SELECT
陳述式的安全性。
安全性原則
下表描述適用於時態表的安全性原則︰
原則 | 描述 |
---|---|
啟用/停用系統版本設定功能需要受影響物件上的最高權限 | 啟用和停用 SYSTEM_VERSIONING 都需要目前和歷程記錄資料表上的 CONTROL 權限。 |
無法直接修改歷程記錄資料 | 當 SYSTEM_VERSIONING 為 ON 時,使用者就無法變更歷程記錄資料,而不論其在目前或歷程記錄資料表上的實際權限為何。 此限制同時包括資料和結構描述修改。 1 |
查詢歷史記錄資料需要歷程記錄資料表上的 SELECT 權限 |
在目前資料表具有 SELECT 權限的使用者在歷程記錄資料表上不會自動擁有 SELECT 權限。 |
稽核顯示以特定方式影響歷程記錄資料表的作業 | 目前資料表中的稽核設定不會自動套用至歷程記錄資料表。 必須針對歷程記錄資料表明確啟用稽核。 一旦啟用,對歷程記錄資料表的稽核就會定期擷取所有直接存取資料的嘗試 (不論其成功與否)。SELECT 搭配時態查詢延伸模組會顯示歷程記錄資料表已受到該作業影響。CREATE/ALTER 時態表也會公開在歷程記錄資料表上發生的權限檢查資訊。 稽核檔案包含歷程記錄資料表的額外記錄。目前資料表上的 DML 作業會顯示受影響的歷程記錄資料表,但 additional_information 會提供必要的內容 (DML 是 SYSTEM_VERSIONING 的結果)。 |
1 如果您具有目前資料表和歷程記錄資料表的 ALTER 權限,而且在目前資料表中捨棄資料行,則歷程記錄資料表中的相關聯資料行也會捨棄,即使 SYSTEM_VERSIONING
為 ON
也是如此。
執行結構描述作業
將 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
權限。