データベースの作成や構成情報の設定方法などを掲載します
動作確認は、SQL Server 2005 Developer Edition で行っています。
1. データベースを作成する
1.1 データベースを作成する方法を掲載します。
データベースを作成するには、CREATE DATABASE 文を使用します。削除する場合は、DROP DABASE 文を使用します。既定では、データベースに対して1つのデータファイルと1つのログファイルが作成されますが、複数のファイルをデータファイル、ログファイルとしてデータベースを作成することもできます。ファイルグループを指定しないとPRIMARY で指定したファイルグループに論理ファイルが含まれます。サンプルでは掲載していませんが、ファイルグループをPRIMARY以外に作成して、論理ファイルを別々のファイルグループに含めるようにすることもできます。
-- データベースを作成する USE master GO -- データベースを既定のオプションで作成 CREATE DATABASE SampleDB GO DROP DATABASE SampleDB GO -- データベースファイルを複数にして作成 CREATE DATABASE SampleDB ON PRIMARY ( NAME = 'SampleDB1', FILENAME = 'C:\work\SampleDB1.mdf', SIZE = 3MB, MAXSIZE = UNLIMITED, FILEGROWTH = 1MB ), ( NAME = 'SampleDB2', FILENAME = 'C:\work\SampleDB2.mdf', SIZE = 2MB, MAXSIZE = UNLIMITED, FILEGROWTH = 10% ) LOG ON ( NAME = 'SampleDB_log', FILENAME = 'C:\work\SampleDB2.ldf', SIZE = 1MB, MAXSIZE = 2GB, FILEGROWTH = 10% ) GO DROP DATABASE SampleDB GO
1.2 データベース情報を表示する
データベースの構成情報を表示するにはsys.databaseカタログビューを使用します。sp_helpdb ストアドプロシージャでもデータベースのステータス情報、設定情報や、ファイル情報を調べることができます。データベースの互換性レベルを設定するには、sp_dbcmptlevel ストアドプロシージャを使用します。sp_dbcmptlevel ストアドプロシージャで互換性レベルの表示、設定を行えます。
-- データベース情報を表示する -- ステータスや、互換性レベル、サイズ -- データベースファイルの情報を表示できる EXEC sp_helpdb 'SampleDB' GO -- データベースの互換性レベルの設定、変更を行う EXEC sp_dbcmptlevel 'SampleDB' -- データベースのステータス情報を表示 select * from sys.databases
1.3 データベースのアクセスモードを変更する
データベースレベルの変更を加える場合に、シングルユーザのみや特定の権限を持つユーザにのみデータベースにアクセスできるようにするには、ALTER DATABASE 文で SINGLE_USER, RESTRICTED_USER, MULTI_USERを指定します。WITH 句でROLLBACK IMMEDIATE, NOWAIT等を指定して、実行中のトランザクションをロールバックする方法を指定できます。
-- データベースへのアクセスモードを変更する -- シングルユーザ、制限ユーザ、マルチユーザ -- に設定できる。 -- データベースをシングルユーザモードにする -- 実行中のトランザクションはすぐにロールバックされる ALTER DATABASE SampleDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE -- アクセスモード確認 select name, user_access_desc from sys.databases -- 待機時間無しでRESTRICTED_USER -- に変更。ほかに接続中にセッション -- があれば、処理に失敗する ALTER DATABASE SampleDB SET RESTRICTED_USER WITH NO_WAIT -- 10秒後に実行中のトランザクション -- がロールバックされ,マルチユーザ -- モードになります ALTER DATABASE SampleDB SET MULTI_USER WITH ROLLBACK AFTER 10 -- データベース名をリネームする ALTER DATABASE SampleDB SET SINGLE_USER WITH ROLLBACK IMMEDIATE ALTER DATABASE SampleDB MODIFY NAME = SampleDB2 ALTER DATABASE SampleDB2 SET MULTI_USER WITH ROLLBACK IMMEDIATE
1.4 データベースをデタッチ/アタッチする
データベースをデタッチするにはsp_detach_db プロシージャを使用し、アタッチする場合にはCREATE DATABASE文を使用します。アタッチした場合、SQL Server ログイン情報は復元しないので、データベースユーザとログインユーザをマッピングする処理をしたり、再作成する必要があります。
-- データベースをデタッチ/アタッチする
EXEC sp_detach_db @dbname='SampleDB2', @skipchecks='false', @KeepFulltextIndexFile='false'
-- データベースをアタッチします
-- ATTACH_REBUILD_LOGを指定すると1 つ以上のトランザクションログ
-- ファイルが見つからない場合、ログ ファイルは再構築されます
CREATE DATABASE SampleDB
ON (FILENAME = 'C:\work\SampleDB1.mdf'),
(FILENAME = 'C:\work\SampleDB2.mdf'),
(FILENAME = 'C:\work\SampleDB2.ldf')
FOR ATTACH_REBUILD_LOG
DROP DATABASE SampleDB
アタッチすると、データベースユーザとログインユーザのマッピングは失われるので、 sp_change_users_login ストアドを利用してマッピングを復元してください。詳細は、[T-SQL] SQLサーバログインユーザ,データベースユーザを作成する の"4. データベースユーザを作成する"の内容を参照してください。
2. データベースの構成情報を表示、設定する
データベースの設定されているオプションを参照するには、sys.databases カタログビューを使用します。オプション設定する場合は、ALTER DATABASE SET 文を使用します。
設定できるオプション項目はたくさんあります。詳細はBooks OnlineのALTER DATABASE の SET オプションを参照してください。
-- データベースオプションを表示する
-- 各列の詳細場Books Online 参照
SELECT name, database_id, source_database_id, compatibility_level, collation_name, user_access_desc, is_read_only,
FROM sys.databases
-- データベース オプションの設定を変更する
-- 指定可能なSQLオプションはたくさんあります。次のリンクを参照
-- [ALTER DATABASE の SET オプション<http://msdn.microsoft.com/ja-jp/library/bb522682.aspx>]参照
-- SETで指定できるSQLオプション例
-- ANSI SQL オプション
-- ANSI_NULL_DEFAULT { ON | OFF }
-- ANSI_NULLS { ON | OFF }
-- ANSI_PADDING { ON | OFF }
-- ANSI_WARNINGS { ON | OFF }
-- ARITHABORT { ON | OFF }
-- COMPATIBILITY_LEVEL = { 80 | 90 | 100 }
-- CONCAT_NULL_YIELDS_NULL { ON | OFF }
-- NUMERIC_ROUNDABORT { ON | OFF }
-- QUOTED_IDENTIFIER { ON | OFF }
-- RECURSIVE_TRIGGERS { ON | OFF }
--
-- AUTO_CLOSE { ON | OFF }
-- AUTO_CREATE_STATISTICS { ON | OFF }
-- AUTO_SHRINK { ON | OFF }
-- AUTO_UPDATE_STATISTICS { ON | OFF }
-- AUTO_UPDATE_STATISTICS_ASYNC { ON | OFF }
ALTER DATABASE SampleDB
SET ANSI_NULLS ON
-- リカバリモデルをシンプルにする
ALTER DATABASE SampleDB
SET RECOVERY SIMPLE
GO
3. まとめ
説明は以上です。