ALTER SERVER AUDIT (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

使用 SQL Server Audit 功能改變伺服器稽核物件。 如需詳細資訊,請參閱 SQL Server 稽核 (資料庫引擎)

Transact-SQL 語法慣例

Syntax

ALTER SERVER AUDIT audit_name  
{  
    [ TO { { FILE ( <file_options> [, ...n] ) } | APPLICATION_LOG | SECURITY_LOG } | URL]  
    [ 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 ' }  

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

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

重要

在 Azure SQL 受控執行個體中,SQL 稽核會在伺服器層級執行,並將 .xel 檔案儲存在 Azure Blob 儲存體中。

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 限制時,導致系統產生其他稽核事件的任何動作都會失敗並發生錯誤。
適用於:SQL Server 2012 (11.x) 和更新版本。

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 作業繼續。 系統不會保留稽核記錄。 稽核會繼續嘗試記錄事件,而且如果失敗狀況已解決,就會恢復稽核。 選取繼續選項會允許可能違反安全性原則的未稽核活動。 當繼續進行資料庫引擎作業比維持完整稽核更重要時,請使用此選項。

SHUTDOWN
如果 SQL Server 因為任何原因無法將資料寫入稽核目標,則會強制關閉 SQL Server 的執行個體。 執行 ALTER 陳述式的登入在 SQL Server 內必須擁有 SHUTDOWN 權限。 即使稍後已從執行中的登入撤銷 SHUTDOWN 權限,關閉的行為仍會持續。 如果使用者沒有此權限,則陳述式將會失敗,且將不會修改稽核。 當稽核失敗可能危害系統的安全性或完整性時,請使用此選項。 如需詳細資訊,請參閱 SHUTDOWN

FAIL_OPERATION
如果資料庫動作導致稽核的事件,這些動作就會失敗。 雖然不會導致稽核事件的動作可繼續進行,不過也無法發生稽核的事件。 稽核會繼續嘗試記錄事件,而且如果失敗狀況已解決,就會恢復稽核。 當維持完整稽核比資料庫引擎的完整存取權更重要時,請使用此選項。
適用於:SQL Server 2012 (11.x) 和更新版本。

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

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

predicate_expression
指定用來判斷是否應該處理事件的述詞運算式。 述詞運算式限制為 3000 個字元,這會限制字串引數。
適用於:SQL Server 2012 (11.x) 和更新版本。

event_field_name
這是識別述詞來源之事件欄位的名稱。 稽核欄位會在 sys.fn_get_audit_file (Transact-SQL) 中說明。 除了 file_nameaudit_file_offset 以外的所有欄位都可進行稽核。
適用於:SQL Server 2012 (11.x) 和更新版本。

number
這是包含 decimal 的任何數值類型。 限制為缺少可用的實體記憶體,或是數字太大而不能表示為 64 位元整數。
適用於:SQL Server 2012 (11.x) 和更新版本。

' string '
ANSI 或 Unicode 字串 (依述詞比較的需求而定)。 不會針對述詞比較函數執行隱含字串類型轉換。 傳遞錯誤的類型會產生錯誤。
適用於:SQL Server 2012 (11.x) 和更新版本。

備註

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

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

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

在建立稽核之後,即無法變更稽核的 GUID。

ALTER SERVER AUDIT 陳述式不能在使用者交易內部使用。

權限

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

範例

A. 變更伺服器稽核名稱

下列範例會將伺服器稽核的名稱 HIPAA_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. 變更伺服器稽核目標

下列範例會將稱為 HIPAA_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)
建立伺服器稽核與伺服器稽核規格