ALTER SERVER AUDIT (Transact-SQL)

使用 SQL Server Audit 功能改變伺服器稽核物件。 如需詳細資訊,請參閱<SQL Server Audit (Database Engine)>。

主題連結圖示 Transact-SQL 語法慣例

語法

ALTER SERVER AUDIT audit_name
{
    [ TO { { FILE ( <file_options> [, ...n] ) } | APPLICATION_LOG | SECURITY_LOG } ]
    [ WITH ( <audit_options> [ , ...n] ) ] 
    [ WHERE <predicate_expression> ]
}
| REMOVE WHERE
| MODIFY NAME = new_audit_name
[ ; ]

<file_options>::=
{
      FILEPATH = 'os_file_path' 
    | MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } 
    | MAX_ROLLOVER_FILES = { integer | UNLIMITED } 
    | MAX_FILES = integer 
    | RESERVE_DISK_SPACE = { ON | OFF } 
}

<audit_options>::=
{
      QUEUE_DELAY = integer 
    | ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION } 
    | STATE = = { ON | OFF } 
}

<predicate_expression>::=
{
    [NOT ] <predicate_factor> 
    [ { AND | OR } [NOT ] { <predicate_factor> } ] 
    [,...n ]
}

<predicate_factor>::= 
    event_field_name { = | < > | ! = | > | > = | < | < = } { number | ' string ' }

引數

  • TO { FILE | APPLICATION_LOG | SECURITY }
    判斷稽核目標的位置。 選項有二進位檔案、Windows 應用程式記錄檔或 Windows 安全性記錄檔。

  • FILEPATH = 'os_file_path'
    稽核記錄的路徑。 檔案名稱是根據稽核名稱和稽核 GUID 所產生。

  • MAXSIZE **=**max_size
    指定稽核檔案所能成長的大小上限。 max_size 值必須是整數,而且後面緊接著 MBGBTBUNLIMITED。 您可以為 max_size 指定的大小下限為 2 MB,而上限則為 2,147,483,647 TB。 當指定了 UNLIMITED 時,檔案會成長到磁碟已滿為止。 指定低於 2 MB 的值將會引發 MSG_MAXSIZE_TOO_SMALL 錯誤。 預設值為 UNLIMITED

  • MAX_ROLLOVER_FILES **=**integer | UNLIMITED
    指定檔案系統中所要保留的最大檔案數目。 當設定 MAX_ROLLOVER_FILES=0 時,不會限制將要建立的換用檔案數目。 預設值為 0。 可以指定的最大檔案數目為 2,147,483,647。

  • MAX_FILES =integer
    指定可建立的最大稽核檔案數目。 達到此限制時,不會換用第一個檔案。 達到 MAX_FILES 限制時,導致系統產生其他稽核事件的任何動作都將失敗並發生錯誤。

  • RESERVE_DISK_SPACE = { ON | OFF }
    這個選項會在磁碟上將檔案預先配置為 MAXSIZE 值。 只有當 MAXSIZE 不等於 UNLIMITED 時,才會套用它。 預設值是 OFF。

  • QUEUE_DELAY **=**integer
    判斷在強制處理稽核動作之前經過的時間長度 (以毫秒為單位)。 值為 0 表示同步傳遞。 可設定的最小查詢延遲值為 1000 (1 秒),這是預設值。 最大值為 2,147,483,647 (2,147,483.647 秒鐘或是 24 天 20 小時 31 分鐘又 23.647 秒鐘)。 指定無效的數字將會引發 MSG_INVALID_QUEUE_DELAY 錯誤。

  • ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION}
    指出如果 SQL Server 無法寫入稽核記錄,則寫入目標的執行個體應該失敗、繼續還是停止。

    • CONTINUE
      SQL Server 作業繼續進行。 系統不會保留稽核記錄。 稽核會繼續嘗試記錄事件,而且如果失敗狀況已解決,就會恢復稽核。 選取 CONTINUE 選項會允許可能違反安全性原則的未稽核活動。 當繼續進行 Database Engine 作業比維持完整稽核更重要時,請使用此選項。

    • SHUTDOWN
      當寫入目標的伺服器執行個體無法將資料寫入稽核目標時,強制伺服器關閉。 發出此內容的登入必須具有 SHUTDOWN 權限。 如果登入沒有此權限,這個功能將會失敗,而且將會引發錯誤訊息。 不會發生稽核的事件。 當稽核失敗可能危害系統的安全性或完整性時,請使用此選項。

    • FAIL_OPERATION
      如果資料庫動作導致稽核的事件,這些動作就會失敗。 雖然不會導致稽核事件的動作可繼續進行,不過也無法發生稽核的事件。 稽核會繼續嘗試記錄事件,而且如果失敗狀況已解決,就會恢復稽核。 當維持完整稽核比 Database Engine 的完整存取權更重要時,請使用此選項。

  • STATE = { ON | OFF }
    啟用或停用收集記錄的稽核。 變更執行中稽核的狀態 (從 ON 變更為 OFF) 會建立已停止稽核的稽核項目、已停止稽核的主體以及停止稽核的時間。

  • MODIFY NAME = new_audit_name
    變更稽核的名稱。 不能搭配其他任何選項一起使用。

  • predicate_expression
    指定用來判斷是否應該處理事件的述詞運算式。 述詞運算式限制為 3000 個字元,這會限制字串引數。

  • event_field_name
    這是識別述詞來源之事件欄位的名稱。 <sys.fn_get_audit_file (Transact-SQL)>詳細描述了稽核欄位。 除了 file_name 和 audit_file_offset 以外的所有欄位都可進行稽核。

  • number
    這是包含 decimal 的任何數值類型。 限制為缺少可用的實體記憶體,或是數字太大而不能表示為 64 位元整數。

  • ' string '
    ANSI 或 Unicode 字串 (依述詞比較的需求而定)。 不會針對述詞比較函數執行隱含字串類型轉換。 傳遞錯誤的類型會產生錯誤。

備註

當您呼叫 ALTER AUDIT 時,您至少必須指定其中一個 TO、WITH 或 MODIFY NAME 子句。

您必須將稽核的狀態設定為 OFF 選項,才能變更稽核。 如果在設定 STATE=OFF 以外的任何選項時啟用稽核,而且執行 ALTER AUDIT,您將會收到 MSG_NEED_AUDIT_DISABLED 錯誤訊息。

您可以加入、改變及移除稽核規格,而不需停止稽核。

在稽核已建立之後,就不能變更稽核的 GUID。

權限

若要建立、改變或卸除伺服器稽核主體,您必須具有 ALTER ANY SERVER AUDIT 或 CONTROL SERVER 權限。

範例

A.變更伺服器稽核名稱

下列範例會將伺服器稽核的名稱 HIPPA_Audit 變更為 HIPAA_Audit_Old。

USE master
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO
ALTER SERVER AUDIT HIPAA_Audit
MODIFY NAME = HIPAA_Audit_Old;
GO
ALTER SERVER AUDIT HIPAA_Audit_Old
WITH (STATE = ON);
GO

B.變更伺服器稽核目標

下列範例會將稱為 HIPPA_Audit 的伺服器稽核變更為檔案目標。

USE master
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = OFF);
GO
ALTER SERVER AUDIT HIPAA_Audit
TO FILE (FILEPATH ='\\SQLPROD_1\Audit\',
          MAXSIZE = 1000 MB,
          RESERVE_DISK_SPACE=OFF)
WITH (QUEUE_DELAY = 1000,
       ON_FAILURE = CONTINUE);
GO
ALTER SERVER AUDIT HIPAA_Audit
WITH (STATE = ON);
GO

C.變更伺服器稽核 WHERE 子句

下列範例會修改在<CREATE SERVER AUDIT (Transact-SQL)>之範例 C 中建立的 WHERE 子句。 新的 WHERE 子句會篩選使用者定義事件識別碼 27。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
WHERE user_defined_event_id = 27;
GO
ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = ON);
GO

D.移除 WHERE 子句

下列範例會移除 WHERE 子句述詞運算式。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
REMOVE WHERE;
GO
ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = ON);
GO

E.重新命名伺服器稽核

下列範例會將伺服器稽核名稱從 FilterForSensitiveData 變更為 AuditDataAccess。

ALTER SERVER AUDIT [FilterForSensitiveData] WITH (STATE = OFF)
GO
ALTER SERVER AUDIT [FilterForSensitiveData]
MODIFY NAME = AuditDataAccess;
GO
ALTER SERVER AUDIT [AuditDataAccess] WITH (STATE = ON);
GO

請參閱

參考

DROP SERVER AUDIT (Transact-SQL)

CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)

ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)

DROP SERVER AUDIT SPECIFICATION (Transact-SQL)

CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)

DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)

ALTER AUTHORIZATION (Transact-SQL)

sys.fn_get_audit_file (Transact-SQL)

sys.server_audits (Transact-SQL)

sys.server_file_audits (Transact-SQL)

sys.server_audit_specifications (Transact-SQL)

sys.server_audit_specification_details (Transact-SQL)

sys.database_audit_specifications (Transact-SQL)

sys.database_audit_specification_details (Transact-SQL)

sys.dm_server_audit_status (Transact-SQL)

sys.dm_audit_actions (Transact-SQL)

概念

建立伺服器稽核與伺服器稽核規格