데이터베이스 옵션 설정
각 데이터베이스마다 데이터베이스의 특징을 결정하는 여러 데이터베이스 수준 옵션을 설정할 수 있습니다. 데이터베이스 수준의 옵션은 각 데이터베이스의 고유한 옵션이므로 다른 데이터베이스에는 영향을 주지 않습니다. 이러한 데이터베이스 옵션은 데이터베이스를 만들 때 기본값으로 설정한 후 ALTER DATABASE 문의 SET 절을 사용하여 변경할 수 있습니다. 또한 SQL Server Management Studio를 사용하여 이러한 옵션을 대부분 설정할 수 있습니다.
[!참고]
서버 차원의 설정은 sp_configure 시스템 저장 프로시저 또는 SQL Server Management Studio를 사용하여 설정할 수 있습니다. 자세한 내용은 서버 구성 옵션 설정를 참조하십시오. 연결 수준 설정은 SET 문을 사용하여 지정합니다. 자세한 내용은 SET 옵션를 참조하십시오.
새로 만든 모든 데이터베이스에 대한 데이터베이스 옵션의 기본값을 바꾸려면 model 데이터베이스에서 해당 데이터베이스 옵션을 변경하십시오. 예를 들어 앞으로 생성될 새 데이터베이스의 AUTO_CLOSE 데이터베이스 옵션 기본 설정을 True로 지정하려면 model의 AUTO_CLOSE 옵션을 True로 설정하십시오.
데이터베이스 옵션을 설정하면 검사점이 자동으로 수행되어 변경 사항이 곧바로 반영됩니다. 자세한 내용은 CHECKPOINT(Transact-SQL)를 참조하십시오.
데이터베이스 옵션
다음 표에서는 데이터베이스를 만들 때 설정되는 데이터베이스 옵션과 그 기본값을 나열합니다. 이러한 옵션에 대한 자세한 내용은 ALTER DATABASE(Transact-SQL)를 참조하십시오.
자동 옵션
일부 자동 동작을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
AUTO_CLOSE |
ON으로 설정하면 마지막 사용자가 끝낸 후 데이터베이스가 종료되고 해당 리소스가 해제됩니다. 사용자가 데이터베이스를 다시 사용하려고 하면 데이터베이스가 자동으로 다시 열립니다. OFF로 설정하면 마지막 사용자가 끝낸 후 데이터베이스가 종료되지 않습니다. |
운영 체제와 관계없이 SQL Server 2000 데스크톱 엔진 또는 SQL Server Express를 사용할 때는 모든 데이터베이스에서 이 옵션이 True로 설정되며 다른 버전의 경우 False로 설정됩니다. |
AUTO_CREATE_STATISTICS |
이 옵션을 ON으로 설정하면 조건자에 사용되는 열에 대해 자동으로 통계가 생성됩니다. OFF로 설정하면 통계가 자동으로 생성되지 않으며 대신 통계를 수동으로 만들 수 있습니다. |
True |
AUTO_UPDATE_STATISTICS |
ON으로 설정하면 쿼리 최적화에 필요한 누락된 통계가 최적화 중에 모두 자동으로 작성됩니다. OFF로 설정하면 통계를 수동으로 만들어야 합니다. 자세한 내용은 통계를 사용하여 쿼리 성능 향상를 참조하십시오. |
True |
AUTO_SHRINK |
이 옵션을 ON으로 설정하면 데이터베이스 파일이 정기적으로 축소됩니다. SQL Server에서 데이터 파일과 로그 파일을 자동으로 모두 축소할 수 있습니다. AUTO_SHRINK는 데이터베이스가 단순 복구 모델로 설정되거나 로그가 백업된 경우에만 트랜잭션 로그의 크기를 축소합니다. OFF로 설정하면 사용되지 않는 공간을 정기적으로 검사할 때 데이터베이스 파일을 자동으로 축소하지 않습니다. |
False |
Auto_Update_Statistics_Asynchronously |
True일 경우 통계를 비동기식으로 업데이트합니다. |
False |
커서 옵션
커서의 동작과 범위를 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
CURSOR_CLOSE_ON_COMMIT |
ON으로 설정하면 트랜잭션이 커밋되거나 롤백될 때 열려 있는 커서가 모두 닫힙니다. OFF로 설정하면 트랜잭션 커밋 시에는 그대로 열려 있으나 트랜잭션 롤백 시 INSENSITIVE 또는 STATIC으로 정의된 것을 제외한 모든 커서를 닫습니다. |
OFF |
CURSOR_DEFAULT |
LOCAL을 지정하고 커서를 만들 때 GLOBAL로 정의하지 않은 경우 커서의 범위는 커서가 생성된 일괄 처리, 저장 프로시저 또는 트리거에 로컬로 적용됩니다. 커서 이름은 그 범위 내에서만 유효합니다. GLOBAL을 지정하고 커서를 만들 때 LOCAL로 정의하지 않은 경우 커서의 범위는 연결에 대해 전역으로 적용됩니다. 연결되어 실행하는 모든 저장 프로시저 또는 일괄 처리에서 커서 이름을 참조할 수 있습니다. |
GLOBAL |
데이터베이스 가용성 옵션
데이터베이스의 온라인 또는 오프라인 여부, 데이터베이스에 연결할 수 있는 사용자 및 데이터베이스가 읽기 전용 모드인지 여부를 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
OFFLINE | ONLINE | EMERGENCY |
OFFLINE이 지정되면 데이터베이스가 닫히고 종료되며 오프라인으로 표시됩니다. ONLINE이 지정되면 데이터베이스가 열려 데이터베이스를 사용할 수 있습니다. EMERGENCY로 지정되면 데이터베이스가 READ_ONLY로 표시되며 로깅 설정이 해제되고 액세스가 sysadmin 고정 서버 역할의 멤버로 제한됩니다. |
ONLINE |
READ_ONLY | READ_WRITE |
READ_ONLY를 지정하면 데이터베이스의 데이터를 읽을 수 있으나 수정할 수는 없습니다. READ_WRITE를 지정하면 데이터베이스에 읽기/쓰기 작업을 수행할 수 있습니다. |
READ_WRITE |
SINGLE_USER | RESTRICTED_USER | MULTI_USER |
SINGLE_USER를 지정하면 한 번에 한 명의 사용자만 데이터베이스에 연결할 수 있습니다. 다른 모든 사용자의 연결은 끊어집니다. RESTRICTED_USER를 지정하면 db_owner 고정 데이터베이스 역할 및 dbcreator와 sysadmin 고정 서버 역할의 멤버만 데이터베이스에 연결할 수 있습니다. 연결할 수 있는 멤버의 수에는 제한이 없습니다. MULTI_USER를 지정하면 적합한 권한을 가진 모든 사용자가 데이터베이스에 연결할 수 있습니다. |
MULTI_USER |
날짜 상관 관계 최적화 옵션
date_correlation_optimization 옵션을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
DATE_CORRELATION_OPTIMIZATION |
ON을 지정하면 SQL Server에서는 FOREIGN KEY 제약 조건으로 연결되고 datetime 열이 있는 데이터베이스 내 두 테이블 간의 상관 관계 통계를 유지 관리합니다. OFF를 지정하면 상관 관계 통계가 유지 관리되지 않습니다. |
OFF |
외부 액세스 옵션
다른 데이터베이스의 개체와 같은 외부 리소스가 데이터베이스에 액세스할 수 있는지 여부를 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
DB_CHAINING |
ON을 지정하면 데이터베이스가 데이터베이스 간 소유권 체인의 원본이나 대상이 될 수 있습니다. OFF를 지정하면 데이터베이스가 데이터베이스 간 소유권 체인에 참여할 수 없습니다. |
OFF |
TRUSTWORTHY |
ON을 지정하면 가장 컨텍스트를 사용하는 데이터베이스 모듈(예: 사용자 정의 함수 또는 저장 프로시저)이 데이터베이스 외부의 리소스를 액세스할 수 있습니다. OFF를 지정하면 가장 컨텍스트가 데이터베이스 외부의 리소스에 액세스할 수 없습니다. 데이터베이스를 연결할 때마다 TRUSTWORTHY는 OFF로 설정됩니다. |
OFF |
매개 변수화 옵션
매개 변수화 옵션을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
PARAMETERIZATION |
SIMPLE을 지정하면 쿼리가 데이터베이스의 기본 동작을 기준으로 매개 변수화됩니다. FORCED를 지정하면 데이터베이스에 있는 모든 쿼리가 매개 변수화됩니다. |
SIMPLE |
복구 옵션
데이터베이스의 복구 모델을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
RECOVERY |
FULL을 지정하면 트랜잭션 로그 백업을 사용하여 미디어 오류 발생 후 완전 복구 기능이 제공됩니다. 데이터 파일이 손상된 경우 미디어 복구 기능을 통해 모든 커밋된 트랜잭션을 복원할 수 있습니다. BULK_LOGGED를 지정하면 특정 대량 작업에 대해 성능 최적화 기능과 로그 공간 최소화 기능이 결합된 미디어 오류 후 복구 기능이 제공됩니다. SIMPLE을 지정하면 최소한의 로그 공간을 사용하는 단순 백업 전략이 제공됩니다. |
FULL |
PAGE_VERIFY |
CHECKSUM을 지정하면 페이지를 디스크에 쓸 때 전체 페이지 내용에 대한 체크섬이 계산되어 페이지 헤더에 값이 저장됩니다. 디스크에서 페이지를 읽으면 체크섬이 다시 계산되어 페이지 헤더에 저장된 체크섬 값과 비교됩니다. TORN_PAGE_DETECTION을 지정하면 페이지를 디스크에 쓸 때마다 8KB 데이터베이스 페이지의 512바이트 섹터마다 특정 2비트 패턴이 데이터베이스 페이지 헤더에 저장됩니다. 디스크에서 페이지를 읽으면 페이지 헤더에 저장된 조각난 비트가 실제 페이지 섹터 정보와 비교됩니다. NONE을 지정하면 데이터베이스 페이지를 쓸 때 CHECKSUM 또는 TORN_PAGE_DETECTION 값이 생성되지 않습니다. 페이지 헤더에 CHECKSUM 또는 TORN_PAGE_DETECTION 값이 있더라도 페이지를 읽는 동안 체크섬이나 조각난 페이지를 확인하지 않습니다. |
CHECKSUM |
Service Broker 옵션
Service Broker 옵션을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS |
ENABLE_BROKER를 지정하면 지정된 데이터베이스에 대해 Service Broker가 설정됩니다. DISABLE_BROKER를 지정하면 지정된 데이터베이스에 대해 Service Broker가 해제됩니다. NEW_BROKER를 지정하면 데이터베이스가 새 Broker 식별자를 받습니다. ERROR_BROKER_CONVERSATIONS를 지정하면 데이터베이스를 연결할 때 데이터베이스의 대화에서 오류 메시지를 받습니다. |
ENABLE_BROKER |
스냅숏 격리 옵션
트랜잭션 격리 수준을 결정합니다.
옵션 |
설명 |
기본값 |
---|---|---|
ALLOW_SNAPSHOT_ISOLATION |
ON을 지정하면 트랜잭션에서 SNAPSHOT 트랜잭션 격리 수준을 지정할 수 있습니다. 트랜잭션이 SNAPSHOT 격리 수준에서 실행되면 모든 문에서 트랜잭션 시작 시점의 상태로 데이터 스냅숏을 봅니다. OFF를 지정하면 트랜잭션에서 SNAPSHOT 트랜잭션 격리 수준을 지정할 수 없습니다. |
OFF |
READ_COMMITTED_SNAPSHOT |
ON을 지정하면 READ COMMITTED 격리 수준을 지정하는 트랜잭션에서 잠금 대신 행 버전 관리를 사용합니다. 트랜잭션이 READ COMMITTED 격리 수준에서 실행되면 모든 문에서 해당 문의 시작 시점 상태로 데이터의 스냅숏을 봅니다. OFF를 지정하면 READ COMMITTED 격리 수준을 지정하는 트랜잭션에서 잠금을 사용합니다. READ_COMMITTED_SNAPSHOT 옵션을 설정할 때는 ALTER DATABASE 명령을 실행하는 연결만 데이터베이스에서 허용됩니다. ALTER DATABASE 명령 실행이 완료될 때까지 데이터베이스에서 다른 열린 연결이 없어야 합니다. 데이터베이스가 단일 사용자 모드에 있을 필요는 없습니다. |
OFF |
SQL 옵션
ANSI 표준 옵션을 제어합니다.
옵션 |
설명 |
기본값 |
---|---|---|
ANSI_NULL_DEFAULT |
CREATE TABLE 또는 ALTER TABLE 문에서 Null 허용 여부가 명시적으로 정의되어 있지 않은 별칭 데이터 형식 또는 CLR 사용자 정의 형식의 열에 대한 기본값(NULL 또는 NOT NULL)을 결정합니다. ON을 지정하면 기본값이 NULL입니다. OFF를 지정하면 기본값이 NOT NULL입니다. |
OFF |
ANSI_NULLS |
ON을 지정하면 Null 값에 대한 모든 비교 결과는 UNKNOWN이 됩니다. OFF를 지정하면 유니코드가 아닌 값과 Null 값을 비교한 결과는 두 값이 모두 NULL일 경우 TRUE입니다. |
OFF |
ANSI_PADDING |
ON으로 설정하면 varchar 또는 nvarchar 열에 삽입된 문자 값의 후행 공백과 varbinary 열에 삽입된 이진 값의 후행 0이 잘리지 않습니다. 값은 열의 크기만큼 오른쪽에 공백으로 채워집니다. OFF로 설정하면 varchar 또는 nvarchar의 후행 공백과 varbinary의 0이 잘립니다. 이 설정은 새 열의 정의에만 영향을 줍니다. ANSI_PADDING을 ON으로 설정하면 Null을 허용하는 char 및 binary 열이 열 길이까지 채워지지만 ANSI_PADDING을 OFF로 설정하면 후행 공백과 0이 잘립니다. Null을 허용하지 않는 char 및 binary 열은 항상 열 길이까지 채워집니다. |
OFF |
ANSI_WARNINGS |
ON을 지정하면 집계 함수에 0으로 나누기 또는 Null 등의 상태가 나타날 때 오류 또는 경고가 발생합니다. OFF를 지정하면 0으로 나누기와 같은 상태가 나타날 때 경고가 발생하지 않고 Null 값이 반환됩니다. |
OFF |
ARITHABORT |
ON을 지정하면 쿼리 실행 중 오버플로 오류나 0으로 나누기 오류가 발생할 경우 쿼리가 종료됩니다. OFF를 지정하면 이러한 오류 중 하나가 발생할 때 경고 메시지가 표시되지만 쿼리, 일괄 처리 또는 트랜잭션이 오류가 발생하지 않은 것처럼 계속 처리됩니다. |
OFF |
CONCAT_NULL_YIELDS_NULL |
ON을 지정하면 피연산자 중 하나가 NULL일 경우 연결 연산의 결과는 NULL입니다. OFF를 지정하면 Null 값이 빈 문자열로 취급됩니다. |
OFF |
QUOTED_IDENTIFIER |
ON을 지정하면 큰따옴표를 사용하여 구분 식별자를 감쌉니다. OFF를 지정하면 식별자가 따옴표 안에 있을 수 없고 모든 Transact-SQL 식별자 규칙을 따라야 합니다. |
OFF |
NUMERIC_ROUNDABORT |
ON을 지정하면 식에서 전체 자릿수 손실이 발생할 경우 오류가 생성됩니다. OFF를 지정하면 전체 자릿수 손실이 발생해도 오류 메시지가 생성되지 않으며 결과가 열 또는 결과를 저장한 변수의 전체 자릿수로 반올림됩니다. |
OFF |
RECURSIVE_TRIGGERS |
ON을 지정하면 AFTER 트리거의 재귀 실행이 허용됩니다. OFF를 지정하면 AFTER 트리거의 직접 재귀 실행만 허용되지 않습니다. |
OFF |
데이터베이스 옵션을 변경하려면