CREATE SERVER AUDIT(Transact-SQL)CREATE SERVER AUDIT (Transact-SQL)

이 항목은 다음에 적용됩니다.예SQL Server(2008부터)아니요Azure SQL Database아니요Azure SQL Data Warehouse 아니요병렬 데이터 웨어하우스 THIS TOPIC APPLIES TO:yesSQL Server (starting with 2008)noAzure SQL DatabasenoAzure SQL Data Warehouse noParallel Data Warehouse

SQL ServerSQL Server Audit를 사용하여 서버 감사 개체를 만듭니다.Creates a server audit object using SQL ServerSQL Server Audit. 자세한 내용은 SQL Server Audit(데이터베이스 엔진)을 참조하세요.For more information, see SQL Server Audit (Database Engine).

항목 링크 아이콘 Transact-SQL 구문 규칙Topic link icon Transact-SQL Syntax Conventions

구문Syntax

CREATE SERVER AUDIT audit_name  
{  
    TO { [ FILE (<file_options> [ , ...n ] ) ] | APPLICATION_LOG | SECURITY_LOG }  
    [ WITH ( <audit_options> [ , ...n ] ) ]   
    [ WHERE <predicate_expression> ]  
}  
[ ; ]  

<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 } ]  
    [ , AUDIT_GUID = uniqueidentifier ]  
}  

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

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

인수Arguments

TO { FILE | APPLICATION_LOG | SECURITY_LOG }TO { FILE | APPLICATION_LOG | SECURITY_LOG }
감사 대상의 위치를 결정합니다.Determines the location of the audit target. 이 옵션은 이진 파일, Windows 응용 프로그램 로그 또는 Windows 보안 로그입니다.The options are a binary file, The Windows Application log, or the Windows Security log. SQL ServerSQL Server 가 Windows 보안 로그에 쓸 수 없습니다. cannot write to the Windows Security log without configuring additional settings in Windows. 자세한 내용은 보안 로그에 SQL Server Audit 이벤트 쓰기를 참조하세요.For more information, see Write SQL Server Audit Events to the Security Log.

파일 경로 ='os_file_path'FILEPATH ='os_file_path'
감사 로그의 경로입니다.The path of the audit log. 파일 이름은 감사 이름과 감사 GUID를 기준으로 생성됩니다.The file name is generated based on the audit name and audit GUID.

MAXSIZE = { max_size}MAXSIZE = { max_size }
감사 파일이 증가할 수 있는 최대 크기를 지정합니다.Specifies the maximum size to which the audit file can grow. max_size 값 뒤에 MB, GB, TB 또는 UNLIMITED는 정수 여야 합니다.The max_size value must be an integer followed by MB, GB, TB, or UNLIMITED. 에 지정할 수 있는 최소 크기 max_size 2mb이 고 최대값은 2147483647 TB입니다.The minimum size that you can specify for max_size is 2 MB and the maximum is 2,147,483,647 TB. UNLIMITED를 지정하는 경우 디스크가 꽉 찰 때까지 파일이 증가합니다.When UNLIMITED is specified, the file grows until the disk is full. 0도 UNLIMITED를 나타냅니다. 2MB 보다 작은 값을 지정 하면 MSG_MAXSIZE_TOO_SMALL 오류가 발생 합니다.(0 also indicates UNLIMITED.) Specifying a value lower than 2 MB raises the error MSG_MAXSIZE_TOO_SMALL. 기본값은 UNLIMITED입니다.The default value is UNLIMITED.

MAX_ROLLOVER_FILES ={정수 | 무제한}MAX_ROLLOVER_FILES ={ integer | UNLIMITED }
현재 파일 외에 파일 시스템에 보관할 최대 파일 수를 지정합니다.Specifies the maximum number of files to retain in the file system in addition to the current file. MAX_ROLLOVER_FILES 값은 정수 또는 UNLIMITED 여야 합니다.The MAX_ROLLOVER_FILES value must be an integer or UNLIMITED. 기본값은 UNLIMITED입니다.The default value is UNLIMITED. 이 매개 변수는 감사를 다시 시작 될 때마다 계산 됩니다 (발생할 수 있는 경우의 인스턴스는 데이터베이스 엔진Database Engine 다시 시작 되거나 감사가 설정 되어 있을 때 해제 한 다음 다시) MAXSIZE에 도달 했으므로 새 파일이 필요할 때 또는 합니다.This parameter is evaluated whenever the audit restarts (which can happen when the instance of the 데이터베이스 엔진Database Engine restarts or when the audit is turned off and then on again) or when a new file is needed because the MAXSIZE has been reached. MAX_ROLLOVER_FILES 파일 수를 초과 하는 경우 계산 되는 MAX_ROLLOVER_FILES 설정, 가장 오래 된 파일은 삭제 됩니다.When MAX_ROLLOVER_FILES is evaluated, if the number of files exceeds the MAX_ROLLOVER_FILES setting, the oldest file is deleted. 결과적으로 때의 설정 MAX_ROLLOVER_FILES 때마다 새 파일을 만들 0는 MAX_ROLLOVER_FILES 설정이 평가 됩니다.As a result, when the setting of MAX_ROLLOVER_FILES is 0 a new file is created each time the MAX_ROLLOVER_FILES setting is evaluated. 하나의 파일은 자동으로 삭제 MAX_ROLLOVER_FILES 설정이 계산 될 있으므로의 값 MAX_ROLLOVER_FILES 은 감소 하 고, 파일 수가 줄어들지 않습니다 오래 된 파일 도달 하지 못할 경우 수동으로 삭제 됩니다.Only one file is automatically deleted when MAX_ROLLOVER_FILES setting is evaluated, so when the value of MAX_ROLLOVER_FILES is decreased, the number of files does not shrink unless old files are manually deleted. 지정할 수 있는 최대 파일 수는 2,147,483,647입니다.The maximum number of files that can be specified is 2,147,483,647.

MAX_FILES =정수MAX_FILES =integer
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

만들 수 있는 최대 감사 파일 수를 지정합니다.Specifies the maximum number of audit files that can be created. 이 제한에 도달하는 경우 첫 파일로 롤오버하지 않습니다.Does not rollover to the first file when the limit is reached. MAX_FILES 제한에 도달 하면 추가 감사 이벤트를 생성 하도록 하는 모든 작업 오류와 함께 실패 합니다.When the MAX_FILES limit is reached, any action that causes additional audit events to be generated, fails with an error.

RESERVE_DISK_SPACE = { ON | OFF }RESERVE_DISK_SPACE = { ON | OFF }
이 옵션은 디스크의 파일을 MAXSIZE 값으로 미리 할당하며,This option pre-allocates the file on the disk to the MAXSIZE value. MAXSIZE가 UNLIMITED가 아닌 경우에만 적용됩니다.It applies only if MAXSIZE is not equal to UNLIMITED. 기본값은 OFF입니다.The default value is OFF.

QUEUE_DELAY =정수QUEUE_DELAY =integer
감사 동작이 강제 처리되기 전까지 허용되는 시간(밀리초)을 지정합니다.Determines the time, in milliseconds, that can elapse before audit actions are forced to be processed. 값이 0인 경우 동기 배달을 나타냅니다.A value of 0 indicates synchronous delivery. 설정 가능한 최소 쿼리 지연 값은 1000입니다. 이 값은 1초에 해당하며 기본값입니다.The minimum settable query delay value is 1000 (1 second), which is the default. 최대값은 2,147,483,647로 2,147,483.647초 또는 24일, 20시간, 31분, 23.647초에 해당합니다.The maximum is 2,147,483,647 (2,147,483.647 seconds or 24 days, 20 hours, 31 minutes, 23.647 seconds). 잘못 된 수를 지정 하는 MSG_INVALID_QUEUE_DELAY 오류가 발생 했습니다.Specifying an invalid number, raises the MSG_INVALID_QUEUE_DELAY error.

ON_FAILURE = {계속 | 종료 | FAIL_OPERATION}ON_FAILURE = { CONTINUE | SHUTDOWN | FAIL_OPERATION }
대상에서 감사 로그에 쓸 수 없는 경우 대상에 쓰기 작업을 수행하는 인스턴스에서 SQL ServerSQL Server가 실패하는지, 계속되는지 또는 중지되는지를 나타냅니다.Indicates whether the instance writing to the target should fail, continue, or stop SQL ServerSQL Server if the target cannot write to the audit log. 기본값은 CONTINUE입니다.The default value is CONTINUE.

CONTINUECONTINUE
SQL ServerSQL Server 작업을 계속합니다. operations continue. 감사 레코드는 보존되지 않습니다.Audit records are not retained. 감사 실패 조건이 해결 되 면 로그 이벤트 및 다시 시작 하려고 계속 합니다.The audit continues to attempt to log events and resumes if the failure condition is resolved. 계속 하기 옵션을 선택 하면 작업이 허용 누구나 감사 되지 않는, 보안 정책을 위반할 수 있습니다.Selecting the continue option can allow unaudited activity, which could violate your security policies. 전체 감사를 유지 관리하는 것보다 데이터베이스 엔진Database Engine의 작업을 계속하는 것이 더 중요하면 이 옵션을 사용하십시오.Use this option, when continuing operation of the 데이터베이스 엔진Database Engine is more important than maintaining a complete audit.

SHUTDOWNSHUTDOWN
인스턴스를 강제로 SQL ServerSQL Server 종료 if SQL ServerSQL Server 어떤 이유로 든 감사 대상에 데이터를 쓰지 못한 합니다.Forces the instance of SQL ServerSQL Server to shut down, if SQL ServerSQL Server fails to write data to the audit target for any reason. 실행 중인 로그인은 CREATE SERVER AUDIT 문에 있어야는 SHUTDOWN 내에서 권한 SQL ServerSQL Server합니다.The login executing the CREATE SERVER AUDIT statement must have the SHUTDOWN permission within SQL ServerSQL Server. 종료 문제가 계속 되 면 경우에는 SHUTDOWN 권한이 실행 중인 로그인에서 나중에 취소 됩니다.The shutdown behavior persists even if the SHUTDOWN permission is later revoked from the executing login. 이 권한이 없으면 다음 문은 실패 하 고 감사 될 만들어지지 않습니다.If the user does not have this permission, then the statement fails and the audit is not be created. 감사 실패로 인해 시스템 무결성 또는 보안이 손상될 수 있는 경우 이 옵션을 사용하십시오.Use the option when an audit failure could compromise the security or integrity of the system. 자세한 내용은 참조 종료합니다.For more information, see SHUTDOWN.

FAIL_OPERATIONFAIL_OPERATION
감사된 이벤트를 발생시키는 데이터베이스 동작이 실패합니다.Database actions fail if they cause audited events. 감사 된 이벤트를 발생 시 키 지 않는 작업을 계속할 수 있지만 감사 된 이벤트가 발생할 수 있습니다.Actions, which do not cause audited events can continue, but no audited events can occur. 감사 실패 조건이 해결 되 면 로그 이벤트 및 다시 시작 하려고 계속 합니다.The audit continues to attempt to log events and resumes if the failure condition is resolved. 데이터베이스 엔진Database Engine에 대한 모든 권한을 얻는 것보다 전체 감사를 유지 관리하는 것이 더 중요하면 이 옵션을 사용하십시오.Use this option when maintaining a complete audit is more important than full access to the 데이터베이스 엔진Database Engine.
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

AUDIT_GUID =고유 식별자AUDIT_GUID =uniqueidentifier
데이터베이스 미러링과 같은 시나리오를 지원하려면 미러된 데이터베이스에서 찾은 GUID와 일치하는 특정 GUID가 감사에 필요합니다.To support scenarios such as database mirroring, an audit needs a specific GUID that matches the GUID found in the mirrored database. 감사가 만들어진 후에는 이 GUID를 수정할 수 없습니다.The GUID cannot be modified after the audit has been created.

predicate_expressionpredicate_expression
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

이벤트 처리 여부를 확인하는 데 사용할 조건자 식을 지정합니다.Specifies the predicate expression used to determine if an event should be processed or not. 조건자 식은 3000자로 제한되며 문자열 인수를 제한합니다.Predicate expressions are limited to 3000 characters, which limits string arguments.

event_field_nameevent_field_name
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

조건자 원본을 식별하는 이벤트 필드의 이름입니다.Is the name of the event field that identifies the predicate source. 감사 필드에 설명 된 sys.fn_get_audit_file( Transact SQL ) .Audit fields are described in sys.fn_get_audit_file (Transact-SQL). file_nameaudit_file_offset을 제외한 모든 필드를 감사할 수 있습니다.All fields can be audited except file_name and audit_file_offset.

numbernumber
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

임의의 숫자 형식을 포함 한 10 진수합니다.Is any numeric type including decimal. 단, 사용 가능한 실제 메모리가 부족한 경우나 값이 너무 커서 64비트 정수로 표현할 수 없는 숫자는 제외됩니다.Limitations are the lack of available physical memory or a number that is too large to be represented as a 64-bit integer.

' string '' string '
적용 대상: SQL Server 2012SQL Server 2012 부터 SQL Server 2017SQL Server 2017까지Applies to: SQL Server 2012SQL Server 2012 through SQL Server 2017SQL Server 2017.

조건자 비교에 필요한 ANSI 또는 유니코드 문자열입니다.Either an ANSI or Unicode string as required by the predicate compare. 조건자 비교 함수에 대해서는 암시적 문자열 유형 변환이 수행되지 않습니다.No implicit string type conversion is performed for the predicate compare functions. 잘못된 유형을 전달하면 오류가 발생합니다.Passing the wrong type results in an error.

주의Remarks

서버 감사를 처음 만들 때는 사용할 수 없는 상태입니다.When a server audit is created, it is in a disabled state.

CREATE SERVER AUDIT 문은 트랜잭션 범위 내에 있습니다.The CREATE SERVER AUDIT statement is in a transaction's scope. 트랜잭션이 롤백되면 이 문도 롤백됩니다.If the transaction is rolled back, the statement is also rolled back.

PermissionsPermissions

서버 감사를 생성, 변경 또는 삭제하려면 보안 주체에게 ALTER ANY SERVER AUDIT 또는 CONTROL SERVER 권한이 있어야 합니다.To create, alter, or drop a server audit, principals require the ALTER ANY SERVER AUDIT or the CONTROL SERVER permission.

감사 정보를 파일에 저장할 때 변조를 방지하기 위해 파일 위치에 대한 액세스를 제한합니다.When you are saving audit information to a file, to help prevent tampering, restrict access to the file location.

Examples

1.A. 파일 대상을 사용하여 서버 감사 만들기Creating a server audit with a file target

다음 예에서는 이진 파일을 대상으로 사용하고 옵션 없이 HIPPA_Audit라는 서버 감사를 만듭니다.The following example creates a server audit called HIPPA_Audit with a binary file as the target and no options.

CREATE SERVER AUDIT HIPAA_Audit  
    TO FILE ( FILEPATH ='\\SQLPROD_1\Audit\' );  

2.B. Windows 응용 프로그램 로그 대상과 옵션을 사용하여 서버 감사 만들기Creating a server audit with a Windows Application log target with options

다음 예에서는 Windows 응용 프로그램 로그에 대한 대상 집합을 사용하여 HIPPA_Audit라는 서버 감사를 만듭니다.The following example creates a server audit called HIPPA_Audit with the target set for the Windows Application log. 큐가 1초마다 기록되고 실패 시 SQL ServerSQL Server 엔진을 종료합니다.The queue is written every second and shuts down the SQL ServerSQL Server engine on failure.

CREATE SERVER AUDIT HIPAA_Audit  
    TO APPLICATION_LOG  
    WITH ( QUEUE_DELAY = 1000,  ON_FAILURE = SHUTDOWN);  

3. C. WHERE 절을 포함하는 서버 감사 만들기Creating a server audit containing a WHERE clause

다음 예에서는 데이터베이스 하나, 스키마 하나 및 테이블 두 개를 만듭니다.The following example creates a database, schema, and two tables for the example. 라는 테이블 DataSchema.SensitiveData 기밀 데이터를 포함 하 고 테이블에 대 한 액세스를 감사에 기록 되어야 합니다.The table named DataSchema.SensitiveData contains confidential data and access to the table must be recorded in the audit. DataSchema.GeneralData라는 테이블은 기밀 데이터를 포함하지 않습니다.The table named DataSchema.GeneralData does not contain confidential data. 데이터베이스 감사 사양은 DataSchema 스키마의 모든 개체에 대한 액세스를 감사합니다.The database audit specification audits access to all objects in the DataSchema schema. 서버 감사를 SensitiveData 테이블로만 제한하는 WHERE 절을 사용하여 서버 감사를 만듭니다.The server audit is created with a WHERE clause that limits the server audit to only the SensitiveData table. 서버 감사에서는 감사 폴더가에 있다고 C:\SQLAudit합니다.The server audit presumes an audit folder exists at C:\SQLAudit.

CREATE DATABASE TestDB;  
GO  
USE TestDB;  
GO  
CREATE SCHEMA DataSchema;  
GO  
CREATE TABLE DataSchema.GeneralData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
CREATE TABLE DataSchema.SensitiveData (ID int PRIMARY KEY, DataField varchar(50) NOT NULL);  
GO  
-- Create the server audit in the master database  
USE master;  
GO  
CREATE SERVER AUDIT AuditDataAccess  
    TO FILE ( FILEPATH ='C:\SQLAudit\' )  
    WHERE object_name = 'SensitiveData' ;  
GO  
ALTER SERVER AUDIT AuditDataAccess WITH (STATE = ON);  
GO  
-- Create the database audit specification in the TestDB database  
USE TestDB;  
GO  
CREATE DATABASE AUDIT SPECIFICATION [FilterForSensitiveData]  
FOR SERVER AUDIT [AuditDataAccess]   
ADD (SELECT ON SCHEMA::[DataSchema] BY [public])  
WITH (STATE = ON);  
GO  
-- Trigger the audit event by selecting from tables  
SELECT ID, DataField FROM DataSchema.GeneralData;  
SELECT ID, DataField FROM DataSchema.SensitiveData;  
GO  
-- Check the audit for the filtered content  
SELECT * FROM fn_get_audit_file('C:\SQLAudit\AuditDataAccess_*.sqlaudit',default,default);  
GO  

관련 항목:See Also

ALTER SERVER audit( Transact SQL ) ALTER SERVER AUDIT (Transact-SQL)
DROP SERVER audit( Transact SQL ) DROP SERVER AUDIT (Transact-SQL)
SERVER AUDIT specification( 만들기 Transact SQL ) CREATE SERVER AUDIT SPECIFICATION (Transact-SQL)
ALTER SERVER AUDIT specification( Transact SQL ) ALTER SERVER AUDIT SPECIFICATION (Transact-SQL)
DROP SERVER AUDIT specification( Transact SQL ) DROP SERVER AUDIT SPECIFICATION (Transact-SQL)
DATABASE AUDIT specification( 만들기 Transact SQL ) CREATE DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER DATABASE AUDIT specification( Transact SQL ) ALTER DATABASE AUDIT SPECIFICATION (Transact-SQL)
DROP DATABASE AUDIT specification( Transact SQL ) DROP DATABASE AUDIT SPECIFICATION (Transact-SQL)
ALTER authorization( Transact SQL ) ALTER AUTHORIZATION (Transact-SQL)
sys.fn_get_audit_file( Transact SQL ) sys.fn_get_audit_file (Transact-SQL)
sys.server_audits( Transact SQL ) sys.server_audits (Transact-SQL)
sys.server_file_audits( Transact SQL ) sys.server_file_audits (Transact-SQL)
sys.server_audit_specifications( Transact SQL ) sys.server_audit_specifications (Transact-SQL)
sys.server_audit_specification_details( Transact SQL ) sys.server_audit_specification_details (Transact-SQL)
sys.database_audit_specifications( Transact SQL ) sys.database_audit_specifications (Transact-SQL)
sys.database_audit_specification_details( Transact SQL ) sys.database_audit_specification_details (Transact-SQL)
sys.dm_server_audit_status( Transact SQL ) sys.dm_server_audit_status (Transact-SQL)
sys.dm_audit_actions( Transact SQL ) sys.dm_audit_actions (Transact-SQL)
sys.dm_audit_class_type_map( Transact SQL ) sys.dm_audit_class_type_map (Transact-SQL)
서버 감사 및 서버 감사 사양 만들기Create a Server Audit and Server Audit Specification