適用於: SQL Server 2016 (13.x) 和更新版本
Azure SQL Database
Azure SQL 受控執行個體
Microsoft Fabric 中的 SQL 資料庫
要保護時序表,你必須了解適用於它們的安全原則。 了解這些原則後,您就可以將安全性套用至 ALTER TABLE、SELECT 和 CREATE TABLE 陳述式。
安全原則
下表描述適用於時態表的安全性原則︰
| 準則 | Description |
|---|---|
| 在受影響物件上啟用/停用系統版本控制需要最高權限 | 啟用或停用 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 SCHEMA 操作
| 運算 | 現行表格 | 歷程資料表 |
|---|---|---|
DROP TABLE |
Disallowed | Disallowed |
ALTER TABLE...SWITCH PARTITION |
僅限 SWITCH IN(請參閱 使用時態資料表進行分割) |
僅限 SWITCH OUT(請參閱 使用時態資料表進行分割) |
ALTER TABLE...DROP PERIOD |
Disallowed | N/A |
ALTER TABLE...ADD PERIOD |
N/A | Disallowed |
允許的 ALTER TABLE 操作
| 運算 | Current | History |
|---|---|---|
ALTER TABLE...REBUILD |
允許(獨立) | 允許(獨立) |
CREATE INDEX |
允許(獨立) | 允許(獨立) |
CREATE STATISTICS |
允許(獨立) | 允許(獨立) |
CREATE 時態表陳述式的安全性
| Feature | 建立新的歷程記錄資料表 | 重複使用現有的歷程記錄資料表 |
|---|---|---|
| 所需權限 | 資料庫中的 CREATE TABLE 權限ALTER 對於建立目前和歷史資料表的結構權限 |
資料庫中的 CREATE TABLE 權限ALTER 權限(位於您建立目前資料表之結構描述上)。歷程記錄資料表上的 CONTROL 權限會指定為建立時態表之 CREATE TABLE 陳述式的一部分。 |
| Audit | 稽核顯示使用者已嘗試建立兩個物件。 操作可能因缺乏建立資料庫資料表的權限,或是無法更改任一資料表的結構而失敗。 | 稽核顯示時態表已建立。 作業可能失敗的原因是在資料庫中建立資料表的權限不足、變更時態表的結構描述的權限不足,或者在歷程記錄資料表上的權限不足。 |
ALTER 時態資料表 SET (SYSTEM_VERSIONING)陳述式的安全性
| Feature | 建立新的歷程記錄資料表 | 重複使用現有的歷程記錄資料表 |
|---|---|---|
| 所需權限 | 資料庫中的 CONTROL 權限。資料庫中的 CREATE TABLE 權限。ALTER 取得建立歷史資料表的結構權限。 |
CONTROL 你要修改的原始資料表權限。歷程記錄資料表上的 CONTROL 權限會指定為 ALTER TABLE 陳述式的一部分。 |
| Audit | 稽核顯示時態表已變更,同時已建立記錄資料表。 此操作可能因缺乏建立資料庫資料表的權限、無法更改歷史資料表的結構,或無法修改時空資料表而失敗。 | 稽核顯示時態表已變更,但作業需要歷程記錄資料表的存取權。 此作業可能失敗的原因是歷程記錄資料表上的權限不足,或者目前資料表上的權限不足。 |
SELECT 陳述的安全性
對於不會影響歷程記錄資料表的 SELECT 陳述式,SELECT 權限會維持不變。 對於會影響歷史資料表的 SELECT 陳述式,你必須同時擁有目前資料表和歷史資料表的 SELECT 權限。