システム データベース

SQL Server には、次のシステム データベースが用意されています。

システム データベース

説明

master データベース

SQL Server のインスタンスのシステムレベルの情報をすべて記録します。

msdb データベース

警告やジョブのスケジュールを設定するために SQL Server エージェントにより使用されます。

model データベース

SQL Server のインスタンスで作成されたすべてのデータベースのテンプレートとして使用されます。データベース サイズ、照合順序、復旧モデル、およびその他のデータベース オプションなどの model データベースに変更を加えると、その変更内容は、それ以降に作成されるすべてのデータベースに適用されます。

Resource データベース

SQL Server に装備されているシステム オブジェクトを格納する読み取り専用のデータベースです。システム オブジェクトは、物理的には Resource データベースに保存されていますが、すべてのデータベースの sys スキーマに論理的に表示されます。

tempdb データベース

一時オブジェクトや生成途中の結果セットを保存するためのワークスペースです。

システム データの変更

SQL Server では、ユーザーは、システム テーブル、システム ストアド プロシージャ、カタログ ビューなどのシステム オブジェクトに含まれている情報を直接更新できません。代わりに、完全な管理ツール セットが用意されています。ユーザーは、これらのツールを使用して、システムを完全に管理し、データベース内のすべてのユーザーとオブジェクトを管理できます。その一部を次に示します。

  • SQL Server Management Studio などの管理ユーティリティ。

  • SQL-SMO API。このツールを使用すると、プログラマはアプリケーションに SQL Server を管理するための完全な機能を含めることができます。

  • Transact-SQL スクリプトとストアド プロシージャ。これらのツールでは、システム ストアド プロシージャと Transact-SQL DDL ステートメントを使用できます。

上記のツールを使用すると、アプリケーションをシステム オブジェクトの変更による影響から保護できます。たとえば、SQL Server では、新しいバージョンの SQL Server に追加された新機能をサポートするために、そのバージョンのシステム テーブルを変更する必要があることがあります。多くの場合、システム テーブルを直接参照する SELECT ステートメントを実行しているアプリケーションでは、旧形式のシステム テーブルに依存しています。そのような場合、システム テーブルに対して SELECT ステートメントを実行するアプリケーションが作成し直されるまで、サイトを新しいバージョンの SQL Server にアップグレードできない可能性があります。SQL Server では、システム ストアド プロシージャ、DDL、および SQL-SMO の公開された各インターフェイスを考慮し、これらの旧バージョンとの互換性を維持できるように機能します。

システム テーブルで定義されたトリガーでは、システムの動作が変更されることがあるので、このようなトリガーはサポートしていません。

注意

システム データベースを UNC 共有ディレクトリに置くことはできません。

システム データベース データの表示

システム テーブルに対する直接的なクエリを実行するような Transact-SQL ステートメントは、アプリケーションが必要とする情報を取得する方法が他にない場合を除いて、作成しないでください。代わりに、アプリケーションで、次のツールを使用してカタログ情報やシステム情報を取得することをお勧めします。

  • システム カタログ ビュー。

  • SQL-SMO。

  • WMI (Windows Management Instrumentation) インターフェイス。

  • カタログ関数、メソッド、属性、または、ADO、OLE DB、ODBC などのアプリケーションで使用されるデータ API のプロパティ。

  • Transact-SQL システム ストアド プロシージャと組み込み関数。