sp_dboption
데이터베이스 옵션을 표시하거나 변경합니다. master 또는 tempdb 데이터베이스에서는 sp_dboption을 사용하지 마십시오. sp_dboption은 이전 버전과의 호환성 용도로 지원됩니다. 데이터베이스 옵션을 설정하려면 ALTER DATABASE를 사용합니다.
구문
sp_dboption [ [ @dbname = ] 'database' ]
[ , [ @optname = ] 'option_name' ]
[ , [ @optvalue = ] 'value' ]
인수
[@dbname =] 'database'
지정된 옵션을 설정할 데이터베이스의 이름입니다. database는 sysname이며, 기본값은 NULL입니다.
[@optname =] 'option_name'
설정할 옵션의 이름입니다. 옵션 이름을 전부 입력할 필요는 없습니다. Microsoft® 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_SHRINK (데이터베이스 옵션 설정 중...)
이 옵션이 ON으로 설정되면, 데이터베이스 파일이 정기적으로 축소됩니다. 데이터 파일과 로그 파일이 모두 자동으로 축소될 수 있습니다. 이 옵션이 OFF이면, 사용되지 않는 공간을 정기적으로 검사할 때 데이터베이스 파일을 자동으로 축소하지 않습니다. 기본적으로, 운영 체제와 상관없이, SQL Server Desktop Edition을 사용할 때는 모든 데이터베이스에서 이 옵션이 ON으로 설정되며, 다른 Edition의 경우에는 OFF로 설정됩니다.
AUTO_SHRINK는 데이터베이스가 단순 복구 모델로 설정되거나 로그가 백업된 경우에만 트랜잭션 로그의 크기를 축소합니다.
AUTO_SHRINK 옵션은 파일에서 사용되지 않는 공간이 25% 이상일 때 파일을 축소합니다. 파일은 파일의 25%가 사용되지 않을 때의 크기 또는 파일이 만들어졌을 때의 크기 중 더 큰 값으로 축소됩니다.
읽기 전용 데이터베이스는 축소할 수 없습니다.
이 옵션의 상태는 DATABASEPROPERTYEX 함수의 IsAutoShrink 속성을 검사하여 알 수 있습니다.
옵션 | 설명 |
---|---|
auto create statistics | true로 설정된 경우, 쿼리 최적화에 필요한 누락된 통계가 최적화 동안 모두 자동으로 작성됩니다. 자세한 내용은 CREATE STATISTICS를 참조하십시오. |
auto update statistics | true로 설정된 경우, 쿼리 최적화에 필요한 오래된 통계가 최적화 동안 모두 자동으로 업데이트됩니다. 자세한 내용은 UPDATE STATISTICS를 참조하십시오. |
autoclose | true로 설정된 경우, 데이터베이스가 완전히 종료되며, 마지막 사용자가 로그오프한 다음에 데이터베이스의 리소스가 해제됩니다. |
autoshrink | true로 설정된 경우, 데이터베이스 파일이 자동 정기 축소의 후보가 됩니다. |
ANSI null default | true로 설정된 경우, CREATE TABLE이 열의 NULL 값 허용 여부를 결정하는 데 SQL-92 규칙을 따르게 됩니다. |
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로 설정된 경우, 데이터베이스가 오프라인됩니다. |
published | true로 설정된 경우, 복제에 대해 데이터베이스를 게시할 수 있습니다. |
quoted identifier | true로 설정된 경우, 구분 식별자를 묶을 때 큰 따옴표를 사용할 수 있습니다. |
read only | true로 설정된 경우, 데이터베이스의 데이터를 읽을 수는 있으나 수정할 수 없습니다. read only 옵션에 대한 새value가 지정된 경우에는 데이터베이스를 사용할 수 없습니다. master 데이터베이스는 예외인데, read only 옵션이 설정된 경우에도 시스템 관리자만이 master를 사용할 수 있습니다. |
recursive triggers | true로 설정된 경우, 트리거의 재귀를 시작할 수 있습니다. false로 설정된 경우, 직접 재귀 전용을 금지합니다. 간접 재귀를 해제하려면 sp_configure를 사용하여 nested triggers 서버 옵션을 0으로 설정하십시오.. |
select into/bulkcopy | true로 설정된 경우, SELECT INTO 문과 빠른 대량 복사를 사용할 수 있습니다. |
single user | true로 설정된 경우, 한 번에 한 사용자만이 데이터베이스에 액세스할 수 있습니다. |
subscribed | true로 설정된 경우, 게시를 위해 데이터베이스를 구독할 수 있습니다. |
torn page detection | true로 설정된 경우, 조각난 페이지를 검색할 수 있습니다. |
trunc. log on chkpt. | true로 설정된 경우, 데이터베이스가 로그 잘림 모드일 때 로그의 비활성화 부분이 검사점에서 잘립니다. 이 옵션은 master 데이터베이스에 대해서만 설정할 수 있습니다. |
데이터베이스 소유자 또는 시스템 관리자는 model 데이터베이스에서 sp_dboption을 실행하여 모든 새 데이터베이스에 대해 특정 데이터베이스 옵션을 설정하거나 해제할 수 있습니다.
sp_dboption이 실행된 이후에는 옵션이 변경된 데이터베이스에서 검사점이 실행됩니다. 이렇게 함으로써 변경 사항이 즉시 적용됩니다.
sp_dboption은 데이터베이스에 대한 설정을 변경합니다. 서버 수준의 설정을 변경하는 데는 sp_configure를 사용하고 현재 세션에만 적용되는 설정을 변경하는 데는 SET 문을 사용하십시오.
사용 권한
사용 권한을 실행하여 현재 데이터베이스에 설정된 사용 가능한 데이터베이스 옵션 목록과 0, 1 또는 2 매개 변수로 sp_dboption을 사용하여 모든 사용자에 대해 기본값이 되는 데이터베이스 옵션의 현재 값을 표시할 수 있습니다.
사용 권한을 실행하여 모든 매개 변수로 sp_dboption 을 사용하여 sysadmin 및 dbcreator 고정 서버 역할 구성원 및 db_owner 고정 데이터베이스 역할 구성원에 대해 기본값이 되는 옵션을 변경할 수 있습니다. 이 권한은 전송할 수 없습니다.
예제
A. 데이터베이스를 읽기 전용으로 설정
다음은 pubs 데이터베이스를 읽기 전용으로 설정하는 예제입니다.
USE master
EXEC sp_dboption 'pubs', 'read only', 'TRUE'
결과 집합은 다음과 같습니다.
명령이성공적으로
완료되었습니다
.
B. 옵션 해제
다음은 pubs 데이터베이스를 다시 기록할 수 있도록 만드는 예제입니다.
USE master
EXEC sp_dboption 'pubs', 'read only', 'FALSE'
결과 집합은 다음과 같습니다.
명령이성공적으로
완료되었습니다
.
C. 데이터베이스를 오프라인으로 설정
다음은 해당 데이터베이스를 액세스하는 사용자가 없을 때 sales 데이터베이스를 오프라인으로 설정하는 예제입니다.
USE master
EXEC sp_dboption 'sales', 'offline', 'TRUE'
결과 집합은 다음과 같습니다.
명령이성공적으로
완료되었습니다
.