sp_dboption(Transact-SQL)

데이터베이스 옵션을 표시하거나 변경합니다. sp_dboption을 사용하여 master 데이터베이스 또는 tempdb 데이터베이스의 옵션을 수정하지 마십시오.

중요 정보중요

이 기능은 다음 버전의 Microsoft SQL Server에서 제거됩니다. 새 개발 작업에서는 이 기능을 사용하지 말고, 현재 이 기능을 사용하는 응용 프로그램은 가능한 한 빨리 수정하십시오. 대신 ALTER DATABASE를 사용하십시오. 복제와 관련된 데이터베이스 옵션(merge publish, published, subscribed)을 수정하려면 sp_replicationdboption을 사용하십시오.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_dboption [ [ @dbname = ] 'database' ] 
    [ , [ @optname = ] 'option_name' ] 
    [ , [ @optvalue = ] 'value' ] 
[;]

인수

  • [ @dbname= ] 'database'
    지정된 옵션을 설정할 데이터베이스의 이름입니다. database는 sysname이며 기본값은 NULL입니다.

  • [ @optname= ] 'option_name'
    설정할 옵션의 이름입니다. 전체 옵션 이름을 입력할 필요가 없습니다. SQL Server는 이름의 고유한 부분을 인식합니다. 옵션 이름 중간에 공백이 있거나 옵션 이름이 키워드인 경우 옵션 이름을 따옴표로 묶어야 합니다. 이 매개 변수를 생략하면 설정되는 옵션이 sp_dboption에 나열됩니다. option_name은 varchar(35)이며 기본값은 NULL입니다.

  • [ @optvalue=] 'value'
    option_name의 새 설정입니다. 이 매개 변수를 생략할 경우 sp_dboption은 현재 설정을 반환합니다. value는 true, false, on 또는 off로 지정할 수 있습니다. value는 varchar(10)이며 기본값은 NULL입니다.

반환 코드 값

0(성공) 또는 1(실패)

결과 집합

다음 표에서는 매개 변수를 제공하지 않은 경우의 결과 집합을 보여 줍니다.

열 이름

데이터 형식

설명

설정할 수 있는 데이터베이스 옵션

nvarchar(35)

설정할 수 있는 모든 데이터베이스 옵션입니다.

다음 표에서는 database 매개 변수만 제공한 경우의 결과 집합을 보여 줍니다.

열 이름

데이터 형식

설명

설정된 옵션

nvarchar(35)

지정한 데이터베이스에 대해 설정된 옵션입니다.

다음 표에서는 option_name을 제공한 경우의 결과 집합을 보여 줍니다.

열 이름

데이터 형식

설명

OptionName

nvarchar(35)

옵션의 이름입니다.

CurrentSetting

char(3)

옵션의 설정 또는 해제 여부입니다.

value를 제공하면 sp_dboption이 결과 집합을 반환하지 않습니다.

주의

다음 표에서는 sp_dboption으로 설정할 수 있는 옵션을 나열합니다. 각 옵션에 대한 자세한 내용은 데이터베이스 옵션 설정을 참조하십시오.

옵션

설명

auto create statistics

true로 설정된 경우 쿼리 최적화에 필요한 누락된 통계가 최적화 동안 모두 자동으로 작성됩니다. 자세한 내용은 CREATE STATISTICS(Transact-SQL)를 참조하십시오.

auto update statistics

true로 설정된 경우 쿼리 최적화에 필요한 오래된 통계가 최적화 동안 모두 자동으로 작성됩니다. 자세한 내용은 UPDATE STATISTICS(Transact-SQL)를 참조하십시오.

autoclose

true로 설정된 경우 마지막 사용자가 로그오프한 후 데이터베이스가 완전히 종료되고 해당 리소스가 해제됩니다.

autoshrink

true로 설정된 경우 데이터베이스 파일이 주기적 자동 축소 대상이 됩니다.

ANSI null default

true일 경우 CREATE TABLE은 ISO 규칙에 따라 열의 Null 값 허용 여부를 결정합니다.

ANSI nulls

true로 설정된 경우 Null 값에 대한 모든 비교가 UNKNOWN으로 평가됩니다. false로 설정된 경우 Null 값에 대한 UNICODE가 아닌 값의 비교는 두 값이 모두 NULL인 경우에 TRUE로 평가됩니다.

ANSI warnings

true로 설정된 경우 "0으로 나누기" 등의 조건이 발생할 때 오류 또는 경고가 발생합니다.

arithabort

true로 설정된 경우 오버플로 또는 0으로 나누기 오류로 인해 쿼리 또는 일괄 처리가 종료됩니다. 트랜잭션에 오류가 발생하면 트랜잭션이 롤백됩니다. false로 설정된 경우 경고 메시지가 표시되지만 쿼리, 일괄 처리 또는 트랜잭션은 오류가 발생하지 않은 상태와 같이 계속 진행됩니다.

concat null yields null

true로 설정된 경우 연결 연산에 NULL인 피연산자가 있으면 결과는 NULL이 됩니다.

cursor close on commit

true로 설정된 경우 트랜잭션이 커밋되거나 롤백될 때 열려 있던 모든 커서가 모두 닫힙니다. false로 설정된 경우 트랜잭션이 커밋될 때 이러한 커서가 열린 상태로 남게 됩니다. false로 설정된 경우 트랜잭션을 롤백하면 INSENSITIVE 또는 STATIC으로 정의된 커서를 제외하고 모든 커서가 닫힙니다.

dbo use only

true로 설정된 경우 데이터베이스 소유자만 데이터베이스를 사용할 수 있습니다.

default to local cursor

true로 설정된 경우 커서 선언이 기본적으로 LOCAL이 됩니다.

merge publish

true로 설정된 경우 데이터베이스를 병합 복제용으로 게시할 수 있습니다.

numeric roundabort

true로 설정된 경우 식에서 전체 자릿수가 손실되면 오류가 발생합니다. false로 설정된 경우 전체 자릿수 손실이 발생해도 오류 메시지가 생성되지 않으며 결과가 결과를 저장하는 변수 또는 열의 전체 자릿수로 반올림됩니다.

offline

true(on)로 설정된 경우 데이터베이스가 오프라인 상태입니다. false(off)로 설정된 경우 데이터베이스가 온라인 상태입니다.

published

true로 설정된 경우 데이터베이스를 복제용으로 게시할 수 있습니다.

quoted identifier

true로 설정된 경우 구분 식별자를 묶을 때 큰따옴표를 사용할 수 있습니다.

read only

true로 설정된 경우 사용자가 데이터베이스의 데이터를 읽을 수만 있습니다. 사용자가 데이터나 데이터베이스 개체를 수정할 수 없지만 DROP DATABASE 문을 사용하여 데이터베이스 자체를 삭제할 수는 있습니다. read only 옵션에 새 value를 지정할 때는 데이터베이스를 사용할 수 없습니다. master 데이터베이스는 예외이며 이 옵션이 설정되어 있는 동안에는 시스템 관리자만 master를 사용할 수 있습니다.

recursive triggers

true로 설정된 경우 트리거를 재귀적으로 실행할 수 있습니다. false로 설정된 경우 직접 재귀만 금지됩니다. 간접 재귀를 해제하려면 sp_configure를 사용하여 nested triggers 서버 옵션을 0으로 설정합니다.

select into/bulkcopy

Microsoft SQL Server 2000부터 현재 데이터베이스 복구 모델이 FULL로 설정되어 있을 경우 select into/bulkcopy 옵션을 사용하면 복구 모델이 BULK_LOGGED로 다시 설정됩니다. 복구 모델을 변경하는 적절한 방법은 ALTER DATABASE 문의 SET RECOVERY 절을 사용하는 것입니다.

single user

true로 설정된 경우 한 번에 한 사용자만 데이터베이스에 액세스할 수 있습니다.

subscribed

true로 설정된 경우 데이터베이스를 게시용으로 구독할 수 있습니다.

torn page detection

true로 설정된 경우 조각난 페이지를 검색할 수 있습니다.

trunc. log on chkpt.

true로 설정된 경우 데이터베이스가 로그 잘라내기 모드일 때 로그의 비활성화 부분이 검사점에서 잘립니다. 이 옵션은 master 데이터베이스에 대해서만 설정할 수 있습니다.

중요 정보중요
SQL Server 2000부터는 trunc. log on chkpt. 옵션을 true로 설정할 경우 데이터베이스의 복구 모델이 SIMPLE로 설정됩니다. 옵션을 false로 설정할 경우 복구 모델이 FULL로 설정됩니다.

데이터베이스 소유자 또는 시스템 관리자는 model 데이터베이스에서 sp_dboption을 실행하여 모든 새 데이터베이스에 대해 특정 데이터베이스 옵션을 설정하거나 해제할 수 있습니다.

sp_dboption을 실행한 후에는 옵션이 변경된 데이터베이스에서 검사점이 실행됩니다. 이렇게 함으로써 변경 내용이 즉시 적용됩니다.

sp_dboption은 데이터베이스에 대한 설정을 변경합니다. 서버 수준의 설정을 변경하는 데는 sp_configure를 사용하고 현재 세션에만 적용되는 설정을 변경하는 데는 SET 문을 사용하십시오.

사용 권한

데이터베이스 옵션 및 현재 값에 대한 전체 목록을 표시하려면 public 역할의 멤버여야 합니다. 데이터베이스 옵션 값을 변경하려면 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

1. 데이터베이스를 읽기 전용으로 설정

다음 예에서는 AdventureWorks2008R2 데이터베이스를 읽기 전용으로 설정합니다.

USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'TRUE';

2. 옵션 해제

다음 예에서는 AdventureWorks2008R2 데이터베이스를 다시 쓰기 가능으로 설정합니다.

USE master;
GO
EXEC sp_dboption 'AdventureWorks2008R2', 'read only', 'FALSE';