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 を利用することができるようになります。

  1. MSDE のダウンロード
  2. MSDE の配信 (セットアップ前のファイル展開)
  3. MSDE インスタンスのセットアップ
  4. インスタンスへの接続確認
  5. データベースの作成
  6. データベースユーザーの作成
  7. テーブルの作成方法(参考)
  8. 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へインストールするという作業になります。ダウンロードファイルの実行後に「パッケージが正常に配信されました。」と表示されるので配信と書きました。

  1. 上でダウンロードしたファイルを実行します
  2. 使用許諾契約書が表示されるので確認して「同意」します。
  3. インストール先のフォルダを指定します。(今回はデフォルトの「C:\MSDERelA」を指定)
  4. ファイルがインストールされ完了のメッセージが表示される。

以上で、データベースのセットアップをする準備が整いました。

 

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