データベース オプションの設定

データベースの特性を決定するいくつかのデータベースレベル オプションは、データベースごとに設定できます。データベース オプションは各データベースに一意であり、他のデータベースには影響しません。これらのデータベース オプションは、データベースを作成した時点では既定値に設定されますが、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 Desktop Engine または 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

カーソルの作成時にカーソルを GLOBAL に定義していない場合に LOCAL を指定すると、カーソルのスコープが、カーソルが作成されたバッチ、ストアド プロシージャ、またはトリガーに限定されます。カーソル名はこのスコープ内だけで有効です。

カーソルを 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 を指定すると、同時に 1 人のユーザーしかデータベースに接続できなくなります。それ以外のすべてのユーザー接続は切断されます。

RESTRICTED_USER を指定すると、db_owner 固定データベース ロール、および dbcreator と sysadmin 固定サーバー ロールのメンバーのみが、同時に接続できるユーザー数に制限なく、データベースにアクセスできます。

MULTI_USER を指定すると、データベースの接続に必要な権限のあるすべてのユーザーがアクセスできるようになります。

MULTI_USER

データの相関関係最適化オプション

date_correlation_optimization オプションを制御します。

オプション

説明

既定値

DATE_CORRELATION_OPTIMIZATION

ON を指定すると、データベースの 2 つのテーブルが FOREIGN KEY 制約でリンクされていて、どちらのテーブルにも datetime 列がある場合、SQL Server により、両テーブル間の相関関係統計が管理されます。

OFF を指定すると、相関関係統計が管理されません。

OFF

詳細については、「相関した datetime 列にアクセスするクエリの最適化」を参照してください。

外部アクセス オプション

別のデータベースのオブジェクトなど、外部リソースからデータベースにアクセスできるかどうかを制御します。

オプション

説明

既定値

DB_CHAINING

ON を指定すると、データベースを複数データベースにまたがる所有権のソースまたはターゲットにすることができます。

OFF を指定すると、そのデータベースは複数データベースにまたがる所有権に参加できません。

OFF

TRUSTWORTHY

ON を指定すると、権限借用コンテキストを使用するデータベース モジュール (ユーザー定義関数やストアド プロシージャなど) から、データベース外部のリソースにアクセスできます。

OFF を指定すると、権限借用コンテキストでは、データベース外部リソースにアクセスできません。

データベースをアタッチすると必ず TRUSTWORTHY が OFF に設定されます。

OFF

パラメーター化オプション

パラメーター化オプションを制御します。

オプション

説明

既定値

PARAMETERIZATION

SIMPLE を指定すると、データベースの既定の動作に基づいてクエリがパラメーター化されます。

FORCED を指定すると、SQL Server により、データベースのすべてのクエリがパラメーター化されます。

SIMPLE

復旧オプション

データベースの復旧モデルを制御します。

オプション

説明

既定値

RECOVERY

FULL を指定すると、メディア障害後にトランザクション ログ バックアップを使用した完全復旧が行われます。データ ファイルが損傷した場合、メディアを復旧することで、コミットされたすべてのトランザクションを復元できます。

BULK_LOGGED を指定すると、特定の大規模操作や一括操作に使用するログ領域が最も少なく、最高のパフォーマンスが得られる方法で、メディア障害後の復旧が行われます。

SIMPLE を指定すると、ログ領域の使用量が最も少ない単純なバックアップ方法が用いられます。

FULL

PAGE_VERIFY

CHECKSUM を指定すると、データベース エンジンではページをディスクに書き込む際に、ページ全体の内容のチェックサムを計算し、ページ ヘッダーに計算したチェックサムの値を格納します。ページがディスクから読み取られるときに、チェックサムが再計算され、ページ ヘッダーに格納されているチェックサムの値と比較されます。

TORN_PAGE_DETECTION を指定すると、ディスクへのページ書き込み時に、8 KB のデータベース ページ内の 512 バイトのセクターごとに、特定の 2 ビット パターンが確保され、データベース ページ ヘッダーに格納されます。そのページがディスクから読み取られるときに、ページ ヘッダーに保存されている各セクターのビットと、実際のページ セクター情報とが比較されます。

NONE を指定すると、データベース ページの書き込み時に CHECKSUM や TORN_PAGE_DETECTION の値が生成されません。CHECKSUM や TORN_PAGE_DETECTION の値がページ ヘッダーに格納されている場合でも、SQL Server は読み取り時にチェックサムや破損ページの検証を行いません。

CHECKSUM

Service Broker のオプション

Service Broker オプションを制御します。

オプション

説明

既定値

ENABLE_BROKER | DISABLE_BROKER | NEW_BROKER | ERROR_BROKER_CONVERSATIONS

ENABLE_BROKER を指定すると、指定されたデータベースで Service Broker が有効になります。

DISABLE_BROKER を指定すると、指定されたデータベースで Service Broker が無効になります。

NEW_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 を指定すると、UNICODE 以外の値と NULL 値の比較結果は、両方の値が NULL 値であれば TRUE になります。

OFF

ANSI_PADDING

ON に設定した場合、varchar 型または nvarchar 型の列に挿入された文字値の後続の空白、および varbinary 型の列に挿入されたバイナリ値の後続の 0 は、切り捨てられません。列の定義サイズに合わせるために値が埋められることはありません。

OFF に設定した場合、varchar 型または nvarchar 型の後続の空白、および varbinary 型の後続の 0 は、切り捨てられます。この設定は新しい列の定義にだけ影響します。

NULL を許容する char 列および binary 列の場合は、ANSI_PADDING を ON に設定すると、列の長さに合うように埋め込みが行われますが、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

データベース オプションを変更するには