sp_dboption (Transact-SQL)

データベース オプションを表示または変更します。master データベースと tempdb データベースのどちらにおいても、sp_dboption を使用してオプションを変更しないでください。

重要な注意事項重要

この機能は、Microsoft SQL Server の次のバージョンで削除されます。新規の開発作業ではこの機能を使用しないようにし、現在この機能を使用しているアプリケーションはできるだけ早く修正してください。代わりに ALTER DATABASE を使用してください。レプリケーション (merge publishpublishedsubscribed) に関連付けられたデータベース オプションを変更するには、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 (失敗)

結果セット

次の表は、パラメーターを指定しない場合の結果セットを示します。

列名

データ型

説明

Settable database options

nvarchar(35)

設定可能なデータベース オプションのすべてです。

次の表は、database パラメーターのみを指定した場合の結果セットを示します。

列名

データ型

説明

The following options are set:

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 を指定すると、UNICODE 以外の値と NULL 値の比較結果は、両方の値が 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 データベースは例外です。read only オプションが設定されていても、システム管理者だけは master データベースを使用できます。

recursive triggers

true を指定すると、トリガーの再帰的な実行を可能にします。false を指定すると、直接再帰呼び出しだけが実行されないようになります。間接再帰呼び出しを無効にするには、sp_configure を使用して、nested triggers サーバー オプションを 0 に設定します。

select into/bulkcopy

Microsoft SQL Server 2000 から使用を開始し、データベースの現在の復旧モデルが FULL に設定されている場合、select into/bulkcopy option を使用すると復旧モデルが BULK_LOGGED に再設定されます。復旧モデルを適切な方法で変更するには、ALTER DATABASE ステートメントの SET RECOVERY 句を使用します。

single user

true を指定すると、特定の時点でデータベースにアクセスできるのは 1 人のユーザーのみです。

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 固定データベース ロールのメンバーシップである必要があります。

A. データベースを読み取り専用に設定する

次の例では、AdventureWorks2008R2 データベースを読み取り専用にします。

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

B. オプションをオフにする

次の例では、AdventureWorks2008R2 データベースを書き込み可能に戻します。

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