第 2 章 SQL Server 2000 データベースの作成~ MCDBA をめざそう!! ~
NRI ラーニング ネットワーク株式会社
技術研修部
清藤 めぐみ
2001年11月30日
はじめに
MCP 試験を受験される方はご存知かと思いますが、Microsoft のサイト(https://www.microsoft.com/japan/learning/mcp/exam.aspx?cert=1&id=70-228)で試験範囲を確認することができます。一度は目を通しておくことをお勧めします。本連載は、試験トピックスの章立てに併せてポイントを解説していきます。
目次
ファイルグループ
CREATE DATABASE、ALTER DATABASE
トランザクションログ
データベースオブジェクト
第 1 章ではインストールの考慮事項を確認しましたので、次に「データベースの作成」を確認しましょう。
「SQL Server 2000 データベースの作成」では、次の項目がポイントとなります。
ファイルグループ
CREATE DATABASE、ALTER DATABASE
トランザクションログ
データベースオブジェクト
1. ファイルグループ
SQL Server 2000 でデータベースを作成すると、データを格納しておくデータファイルと、トランザクションログを格納するトランザクションログファイルが同時に作成されます。
最初に作成されるデータファイルはプライマリファイル(*.mdf)で、プライマリファイルグループに属しています。ファイルグループとは、データベースの管理、データの割り当てや配置をしやすくするためのデータファイルの集合です。プライマリファイルには、データベースのシステムテーブルが格納されるため、1 データベースに 1 プライマリファイルが必要です。
データベースが大きい場合、セカンダリファイル(*.ndf)を作成し、データを分散して格納することができます。セカンダリファイルはプライマリファイルグループに含めるか、ユーザ定義のファイルグループを作成し、そのファイルグループに含めることができます。ただし、データファイルは 1 つのファイルグループにしか所属できません。
図 1.1 ファイルとファイルグループ
図 1.1 にあるように、複数のファイルおよびファイルグループを作成する理由は次のとおりです。
バックアップの実行単位を小さくする
負荷分散
トランザクションログファイル(*.ldf)は、複数作成することができますが、ファイルグループの定義はありません。
SQL Server 2000 では、デフォルトのファイルグループを指定することができます。テーブルやインデックス作成時に特定のファイルグループを指定しなかった場合は、デフォルトと設定されているファイルグループ内のデータファイルに作成されます。
参照: |
MSUテキスト「SQL Server 2000 システム管理 (P.119~120、P.134~136)」 |
|
Books Online (ファイル グループ) |
2. CREATE DATABASE、ALTER DATABASE
1.1 CREATE DATABASE
CREATE DATABASE はデータベースを作成するクエリです。SQL Server は model データベースのコピーを使用して、データベースを初期化します。model データベースのすべてのオプションや設定は新規データベースにコピーされます。次のクエリを実行すると、model データベースと同じサイズでプライマリファイルとトランザクションログファイルを作成します。
CREATE DATABASE SalesDB
CREATE DATABASE にはデータファイルやトランザクションログファイルのサイズを指定するオプションや、ファイルグループを指定するオプションがあります。サイズを指定してデータベースを作成する場合の構文例は以下のようになります。
CREATE DATABASE SalesDB ON ( NAME = SalesDB_dat, FILENAME = 'C:\program Files\microsoft sql server\mssql\data\salesdbdat.mdf, SIZE = 10, MAXSIZE = 50, FILEGROWTH = 5 ) LOG ON (NAME = SalesDB_log, FILENAME = 'C:\program Files\microsoft sql server\mssql\data\salesdblog.mdf, SIZE = 5, MAXSIZE = 25, FILEGROWTH = 5 ) GO |
← データファイルの論理名 ← データファイルの物理ファイル名 ← 初期サイズ(注1) ← 最大サイズ(注2) ← 拡張単位(注3) ← トランザクションログファイルの論理名 ← トランザクションログファイルの物理名 ← 初期サイズ(注1) ← 最大サイズ(注2) ← 拡張単位(注3) |
(注1) |
デフォルトの単位は MB。KB、MB、GB、TB 単位で指定可能 |
|
最小値 512 KB |
(注2) |
デフォルトの単位は MB。KB、MB、GB、TB 単位で指定可能 |
(注3) |
デフォルトの単位は MB。KB、MB、GB、TB または % 位で指定可能。拡張しないようにする場合 は 0 を設定 |
1.2 ALTER DATABASE
ALTER DATABASE はファイルやファイルグループの追加や削除をすることができます。データベース名、ファイルグループ名、データファイルやトランザクションログファイルの論理名を変更することもできるようになっています。
たとえば、Sales データベースの名前を SalesDB に変更したい場合は
ALTER DATABASE Sales Modify Name = SalesDB
となります。
参照: Books Online (CREATE DATABASE、ALTER DATABASE)
3. トランザクションログ
トランザクションログは、データベースに対して行われた変更と、その変更を実行したトランザクションを記録します。トランザクションとは、1 つ以上の Transact-SQL ステートメントの集まりで、論理的な 1 つの作業単位として扱われます。変更内容はデータベースに書き込まれる前に、トランザクションログに記録されます。その後、チェックポイントにより、コミット済みトランザクションをデータベースに書き込みます。トランザクションログをバックアップしておくと、障害発生時にデータベースを復旧できます。トランザクションログファイルは各データベースに最低 1 つは必要です。データファイルにトランザクションログを含めることはできません。トランザクションログファイルのサイズは、通常データファイルの 10 ~ 15 % で作成します。
4. データベースオブジェクト
データベースには、データ、テーブル、その他のオブジェクトが格納されています。主なデータベースオブジェクトを以下の表に記します。
データベースオブジェクト |
|
説明 |
---|---|---|
テーブル |
|
行に関連した列の集まり |
制約 |
PRIMARY KEY 制約(主キー) |
テーブルの各行を一意に識別する値が入った列、または列の組み合わせ |
制約 |
FOREIGN KEY 制約(外部キー) |
2 つのテーブルのリンクを設定するための単一の列または列の組み合わせ |
制約 |
CHECK 制約 |
列に格納できる値を制限する |
|
|
論理式、同一テーブル内の別の列の値と比較 |
インデックス |
クラスタ化インデックス |
テーブルにある行の物理的な順序を表す |
|
|
1 テーブルに 1 つ作成できる |
|
|
(辞書のようなイメージ) |
|
非クラスタ化インデックス |
テーブルにある行の論理的な順序を表す |
|
|
1 テーブルに 249 個まで作成可能 |
|
|
(本の索引のようなイメージ) |
ビュー |
|
仮想テーブル |
|
|
1 つ以上のテーブルから必要な列のみピックアップして表示 |
ストアドプロシージャ |
|
1 つのユニットとして実行するプリコンパイルされた Transact-SQL ステートメントの集まり |
トリガ |
|
ユーザがテーブル内またはビューのデータを変更した際に、自動実行される特殊な形式のストアドプロシージャ |
表 4.1 データベースオブジェクト
参照: MSUテキスト「SQL Server 2000 システム管理(P.35)」
制約やインデックスに関しては、いろいろ出題されています。データベースオブジェクトの中で、制約やインデックスは SQL Server 2000 システム管理のテキストには詳しくは記載されていません。SQL Server 2000 データベースプログラミングや Books Online、リソースキットを活用しましょう!
清藤 めぐみ : 1997 年に Microsoft 認定トレーナ(MCT)の資格を取得し、Windows NT のトレーニングを担当するようになりました。現在は NRI ラーニングネットワークに所属し、Windows 2000 などのトレーニングや、技術書籍の監修を行う毎日で、あっという間に時間が過ぎてしまいます。そんな状態なので、最近はちょっとストレスがたまり気味。ストレス解消のため、ショッピングにはまってしまい、財布の中身が心許ない今日この頃です。 皆さんのご期待にそえるような記事作りをめざしていきます。よろしくお願いします。