MSDE による DBMS 構築
SOFTWARE REPORT
はじめに
あるとき、プログラムの勉強も兼ねて、20人程度のサークルを運営するためのシステムを作ろうと思いました。Visual C# 買い、データベースも必要だな・・・と思ったところである問題にぶつかりました。
そうです。データベースが高いのです。Microsoft Access を買いに行ったのですが、単体で3万円。とても趣味で追加投資できる値段ではありませんでした。
また、同じころ仕事で SQL Server を使うことになり、SQL Server と互換性のあるという、無料でダウンロード可能な "MSDE" をもちいて、データベースを作ろうと思ったのでした。
ここからのお話は、Access が高くて買えなく、MSDE を導入してもいいがセットアップに手間をかけたくない人、MSDE をダウンロードしたはいいが、手も足も出せない人のお役に立てるものと思います。
具体的には…
具体的には以下の内容に触れます。ここまでで 、各プログラムツール(Visual BasicやVisual C#など)から ODBC を介して、Access と同じように MSDE を利用することができるようになります。
- MSDE のダウンロード
- MSDE の配信 (セットアップ前のファイル展開)
- MSDE インスタンスのセットアップ
- インスタンスへの接続確認
- データベースの作成
- データベースユーザーの作成
- テーブルの作成方法(参考)
- ODBC 設定
環境
この執筆にあたって、プラットフォームは、Microsoft Windows 2000 Service Pack 3 を使用しています。
セットアップする MSDE は、2004年3月10日時点で最新のMSDE (Microsoft SQL Server 2000 Desktop Engine ) Release A を使用しました。
MSDE のダウンロード
ダウンロードの手順(例)
MSDE は Microsoft Office や Visual Studio に付属しているらしいですが、今回はマイクロソフトのサイトからダウンロードすることにしました。
まず、マイクロソフトのサイトへ接続します。(http://www.microsoft.com/japan/)
サイトが表示されたら「Microsoft.com Japan サイトの検索: 」に "MSDE ダウンロード"と入力して検索をすると結果の最初の方にそれらしいのが出てくると思います。
今回、「ダウンロードの詳細 : MSDE 2000 Release A」という項目が見つかったのでリンクをたどり「JPN_MSDE2000A.exe」をダウンロードしました。
MSDE の配信
JPN_MSDE2000A.exe の実行
配信と言うと紛らわしい感じがしますが、データベースをセットアップするためのファイルをPCへインストールするという作業になります。ダウンロードファイルの実行後に「パッケージが正常に配信されました。」と表示されるので配信と書きました。
- 上でダウンロードしたファイルを実行します
- 使用許諾契約書が表示されるので確認して「同意」します。
- インストール先のフォルダを指定します。(今回はデフォルトの「C:\MSDERelA」を指定)
- ファイルがインストールされ完了のメッセージが表示される。
以上で、データベースのセットアップをする準備が整いました。
MSDE インスタンスのセットアップ
設定内容(例)
今回は以下の内容でセットアップを行いました。 IP アドレスは各自 PC の設定を参照してください。
設定項目 | 設定値 | メモ |
---|---|---|
IP アドレス
|
- | 192.168.188.1(各自の IP アドレス) |
インスタンス名
|
msdeins | データベースインスタンスの名前 |
管理者パスワード
|
inspasswd | 管理者"sa"のパスワード |
ログイン方法
|
混在モード | Windows認証ログイン&SQL認証ログイン |
ネットワーク接続
|
ネットワーク接続の許可 | ネットワークからの接続も許可する |
セットアップ
コマンドプロンプトを開き、MSDE をインストールしたパスへ移動します。(今回の例では、「C:\MSDERelA」)
cd C:\MSDERelA
記設定内容(例)でセットアップ
setup instancename="msdeins" sapwd="inspasswd" securitymode=sql disablenetworkprotocols=0
以下パラメータの説明です。
instancename="msdeins"
|
インスタンス名を指定 |
---|---|
sapwd="inspasswd" | 管理者パスワードを指定 |
securitymode=sql | 認証モードを混在モードに指定 |
disablenetworkprotocols=0 | ネットワーク接続を許可 |
以上で、データベースインスタンスのセットアップが開始されます。セットアップが完了したら Windows を再起動します。(サービス:SQLAgent$MSDEINSの起動でも可)
このセットアップ作業を繰り返せば、複数のデータベースインスタンスをセットアップすることも可能です。
インスタンスへの接続確認
作成したインスタンスへアクセスするには、MSDE に付属の osql というツールを使います。
まず、上で作成したデータベースにアクセスします。コマンドプロンプトより、以下のコマンドを入力します。 ( IP アドレスは各自の環境に合わせてください。)
osql -S 192.168.188.1\msdeins -U sa -P inspasswd
以下パラメータの説明です。
-S | ( IP アドレス or コンピュータ名) \ (データベース名) |
---|---|
-U | ユーザ名 |
-P | パスワード |
データベースの接続に成功すると以下のような表示になります。
1>
接続が確認できたので osql を終了します。
1>quit
データベースの作成
作成データベース (例)
今回は以下の内容でデータベースを作成しました。
データベース名 | msdedb |
---|---|
データファイル名称 | dbf01 |
データファイル場所 | C:\Program Files\Microsoft SQL Server\MSSQL$MSDEINS\Data\msdedb.mdf |
ファイルサイズ | 30 MB |
ファイルの最大サイズ | 300 MB |
データベース作成
上記と同様にして MSDE インスタンスにアクセスします。
osql -S 192.168.188.1\msdeins -U sa -P inspasswd
以下のスクリプトを実行してデータベースを作成します。
CREATE DATABASE msdedb
ON
(
name = dbf01,
FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL$MSDEINS\Data\msdedb.mdf',
SIZE = 30MB,
MAXSIZE = 300MB
)
スクリプトを入力し終えたら、"go" と入力することでスクリプトが実行されます。
実際に実行した結果は次のようになります。
osql -S 192.168.188.1\msdeins -U sa -P inspasswd
1> CREATE DATABASE msdedb
2> ON
3> (
4> name = dbf01,
5> FILENAME = 'C:\Program Files\Microsoft SQL Server\MSSQL$MSDEINS\Data\msdedb.mdf',
6> SIZE = 30MB,
7> MAXSIZE = 300MB
8> )
9> go
CREATE DATABASE: ディスク 'dbf01' に 30.00 MB 割り当てています。
CREATE DATABASE: ディスク 'msdedb_log' に 7.50 MB 割り当てています。
1>
以上でデータベースの作成は完了です。
1>quit
データベースユーザーの作成
今回作成するユーザー
せっかくデータベースを作成したので、データベースユーザを作成してみます。今回は以下の内容でユーザーを作成しました。
ユーザー名 | dbuser |
---|---|
パスワード | userpwd |
データベースユーザーの作成
作成したデータベースに接続します。先ほどのインスタンス接続コマンドに -d (データベース名) をつけて明示的に接続します。
osql -S 192.168.188.1\msdeins -U sa -P inspasswd -d msdedb
作成したデータベースに接続したら、以下のスクリプトを実行して、データベースユーザーを作成します。
EXEC sp_addlogin 'dbuser', 'userpwd', 'msdedb'
パラメータは順番に 「ユーザ名」、「パスワード」、「ディフォルトデータベース」
結果は以下のようになります。
1> EXEC sp_addlogin 'dbuser', 'userpwd', 'msdedb'
2> go
新しいログインが作成されました。
1>
続けて、今作成したユーザーがデータベースにアクセスできるように、権限を与えます。
EXEC sp_grantdbaccess 'dbuser'
パラメータは 「ユーザー名」
結果は以下のようになります。
1> EXEC sp_grantdbaccess 'dbuser'
2> go
'dbuser' にデータベースのアクセス権が許可されました。
1>
これに加えて今回は、このユーザーにすべての権限を与えることにします。
GRANT ALL TO dbuser
以上で、データベースユーザーの作成とアクセス権限の設定が完了しました。
1>quit
テーブルの作成方法(参考)
テーブルの作成例
参考までに、テーブル作成例をあげておきます。
以下は作成したデータベース "msdedb" に作成したユーザー "dbuser" で接続し、"TBL_TEST" という名前のテーブルを作成した例です。
osql -S 192.168.188.1\msdeins -U dbuser -P userpwd -d msdedb
1> begin
2> create table TBL_TEST
3> (
4> id int not null identity,
5> test char(64),
6> PRIMARY KEY(id)
7> )
8> end
9> go
1>
ODBC 設定
今回作成したデータベースの概要
上で作成したデータベースの設定のうち、ODBC の設定に必要なものを抜粋しました。
サーバー名 | 192.168.188.1\msdeins |
---|---|
ログイン ID | dbuser |
ログインパスワード | userpwd |
以下では Windows 2000 Professional で ODBC 設定を実施した例です。環境によっては若干異なる可能性があります。Windows 2000 で ODBC を設定するには以下をたどり、「ODBC データソース アドミニストレータ」 を開きます。
「スタート」 メニュー → 「設定」 → 「コントロールパネル」 の 「管理ツール」 → 「データソース (ODBC)」
ODBC 設定 (1/3) - データソースの追加
「ODBC データソース アドミニストレータ」 で 「ユーザー DSN」 (「システム DSN」 でも可) タブを選択し、「追加...」 ボタンを押します。
ドライバの種類がリスト表示されるので、「SQL Server」 を選択します。
データソースのドライバ | SQL Server |
---|
ODBC 設定 (2/3) - 接続情報の設定
ウィザードに従い以下の内容を設定します。他項目についてはディフォルト値を設定しました。
SQL Server サーバー名 | msdeins01 |
---|---|
SQL Server がログイン ID の権限を確認する方法 | SQL Server 用のログイン ID とパスワードを使う |
ログイン ID (既定値取得用) | dbuser |
パスワード (既定値取得用) | userpwd |
データソース名: msdeins01 | ODBC 上の名前。重複しない任意の名前をつけることが出来ます。 |
---|---|
SQL Server サーバー名: 192.168.188.1\msdeins | 作成した MSDE インスタンス名 |
SQL Server がログイン ID の権限を確認する方法: 「SQL Server 用のログイン ID とパスワードを使う」 | 作成したデータベースユーザーで認証を行います。 |
ログイン ID: dbuser | ログイン可能なデータベースユーザー |
パスワード: userpwd | ログイン ID に指定したデータベースユーザーのパスワード |
ODBC 設定 (3/3) - 接続確認
上記設定が済み、「完了」 を選択すると、確認ダイアログが表示されるので、「データソースのテスト」 を選択します。
「テストは無事に完了しました。」 と表示されれば完了です。
おわりに
以上で、MSDE のセットアップから ODBC 設定は完了です。
今回作成したデータベースにアクセスする場合は、以下のパラメータで ODBC 接続します。
DSN | msdeins01 |
---|---|
ユーザー ID | dbuser |
パスワード | userpwd |