次の方法で共有


SQL Server のデータベース オプション フラグの収集

By Shawn Aebi - Microsoft Federal Systems

SQL Server にはサーバー自体とデータベースの両方についての管理設定があります。これらの設定の一部は、任意のデータベース管理者が利用可能な sp_configure オプションを通じて制御することができます。しかし、より詳細なパラメータはシステム テーブルに格納され、master データベース内でアクセスする必要があります。この設計により、システム管理者 (SA) およびデータベース所有者 (DO) のみがこの情報にアクセスできます。これらの管理者は sp_dboption システム プロシージャを使って処理を行います。

現在、sp_dboptionは 6 つの設定についての情報スイッチを保持します。

DBO USE ONLY

データベースの使用を DBO に限定します。

NO CHKPT ON RECOVERY

回復時にサーバーがトランザクション ログにチェックポイント レコードを書き込まないようにします。

READ ONLY

すべてのデータベースを読み取り専用モードにします。これによりユーザーはデータベースの内容を変更できなくなります。

SELECT INTO/BULKCOPY

ログなし処理を許可します。bcp によるデータのインポート/エクスポートや select into により一時テーブルを作成する処理でよく使われます。

SINGLE USER

データベースに同時にアクセスできるユーザーをただ 1 人に限定します。

TRUNC. LOG ON CHKPT.

各チェックポイントにおいて、トランザクション ログのアクティブでない部分を強制的にクリアします。 (既定では 5 分おきに行います)

これらのオプションは sysdatabase システム テーブル内の status フィールドに保持されます。各パラメータにはビット エントリに等しい番号が割り当てられています。番号には間隔が空いていますが、これは予約されたものです。

Bulkcopy

4

Trunc.Log

8

No Chkpt

16

ReadOnly

1024

DBOOnly

2048

Single Use

4096

(たとえば、Trunc.Log と DBOOnly 設定が ON のデータベースのステータスは 8 + 2048 = 2056 となります)

システム管理者にとって、各データベースでどの設定が ON になっているかを知ることは有益です。処理によっては、たとえば、事前に select into/bulkcopy を OFF にする必要があります。サーバー全体に関してこれらの統計をグローバルに監視することは明らかにシステム管理者の責任です。sp_helpdb などのプロシージャを使って、 (1) データベースを一覧表示する、および (2) 個々のデータベースについてのデータベース オプション設定を一覧表示することはできますが、これら 2 つを組み合わせ、すべてのデータベースに関するすべてのデータベース オプション設定を表形式にする操作は存在しません。

以下のプロシージャは sysdatabases システム テーブル内の各エントリについてステータスを調べ、No または Yes に区別します。結果は表形式で印刷されます。

select "Name" = db.name,
"Bulkcopy" =

substring("NY", (db.status / 4 % 2) + 1, 1),
"TruncLog" =

substring("NY", (db.status / 8 % 2) + 1, 1),
"NoChkpt" =

substring("NY", (db.status / 16 % 2) + 1, 1),
"ReadOnly" =

substring("NY", (db.status / 1024 % 2) + 1, 1),
"DBOOnly" =

substring("NY", (db.status / 2048 % 2) + 1, 1),
"SingleUse" =

substring("NY", (db.status / 4096 % 2) + 1, 1),
from sysdatabases db

このルーチンは substring を用いて、 0 を「N」(No) に、1 を「Y」(Yes) に一致させています。結果の表は以下のようになります。

Name

Bulkcopy

TruncLog

NoChkpt

ReadOnly

DBOOnly

SingleUse

master

N

Y

N

N

N

N

model

N

N

N

N

N

N

pubs

N

N

N

N

N

N

tempdb

Y

N

N

N

N

N

test

N

N

N

N

N

N

wisc

Y

N

N

N

N

N

(6 row(s) affected)

この Transact SQL ステートメントにより、システム管理者はサーバーのデータベース オプション パラメータのスナップショットを取得したり、定常的な保守処理にこのプロシージャを組み入れたりすることが可能になります。