C# Programming

Image

MSDEの環境設定

開発環境: Visual Studio 2003 

1.目次

2.はじめに

SQL Server 2000 Desktop Engine (MSDE 2000) は、SQL Server をベースにしたデータベース エンジンで、、無償の再配布可能です。MSDEは、SQL Server との完全な互換性があり、小規模なデータベースアプリケーションを作ることができます。

SQL Server に比べて、管理用ソフト(EnterpriseManager)が無い、データ量が1つのデータベースあたり最大2GBまでに制限されているなどの制限があります。

しかし、Windows XPでも動くので、VS.NETでデータベース関連のプログラムを作るときに、MSDE を使って、お気軽に試すことができます。

ここでは、まずMSDEのセットアップです。

3.参考

(1) Microsoft MSDE Home ここからMSDEをダウンロードできます。
(2) MSDN ADO.NET の概要 ADO.NETについて解説している。
 

4.Microsoft のデータベースアクセスアーキテクチャの変遷

Microsoft のデータベースは次のように変化しています。

データベースアクセスアーキテクチャの変遷を簡単にまとめると、次のようになります。

データアクセス 低レベル I/F高レベル  I/F説明
ODBC

Windows APIによる低レベル I/F。今でも現役で使われている。
Data Access Objects ( DAO )Microsoft Access と Officeのプログラマー向け ODBC の I/F。
推奨されていません。
ADOへ移行。
Remote Data Objects ( RDO )Visual Basic のプログラマー向け ODBC への I/F。
推奨されていません。
ADOへ移行。
OLE DB

データに対する基本的なアクセス機能を提供する。.NET でも、このOLE DB を使用します。

ODBC と比較するとパフォーマンスを向上。
ActiveX Data Objects ( ADO )OLE DB に対し、簡単に使えるI/Fを提供。コードの量と複雑さを軽減。
主にASPで使われている。
でも、コードとビューが分離できてないので、メインテナンス性が悪い。
もはや、これもADO.NET に取って代わられる運命にある。
ADO.NETコードビハインドというコードを分離するアーキテクチャになっており、過去のインターフェースに比べれば格段の進歩を遂げていると思う。

.NET では、過去の資産も使えるように配慮されていますが、基本的にはADO.NET に移行しなさいということです。まあ、過去のしがらみはないので、古いものを調べないですむので助かりますが、過去の資産を持っている開発者は大変ですね。

5.Microsoft Desktop Engine (MSDE)

 

リンク説明
MSDE FunClubメイリングリスト、過去ログなど
MSDE と Access 2000 の違いについてMSDE を使ったらいいのか、Access を使ったらいいのかの解説
Accessの新常識! MSDEでできることAccess 2000でも、MSDEが使えるようになった。Access 2000で Jet Engine か、MS Desktop Engine を使うかの解説。
JavannOSQL の簡単な説明。
PASS JSQL Server ユーザーグループ

6.MSDE のインストール

 

注意
MSDE/MS SQL には、「Windows 認証」と「SQL認証」の2つのモードがあります。
この設定を間違えると、インストール後にデータベースに接続しようとしても接続できないということがありえます。
何を言っているのかわからない人は、まず「Windows 認証」と「SQL認証」の2つのモードについて、よく理解してから先に進んでください。

SQL の認証には、「Windows 認証」と「SQL認証」があります。

SQL の認証モード説明
Windows 認証Windows にログオンした時点で SQL にもログオンしたとみなす認証する方法です。
このため、例えば Uchukamen という Windows ユーザでログインしている場合、
Uchukamen というユーザ名でSQL への認証が行われます。
このメリットは、Windows と SQL と2回ログインする必要が無いという点です。
SQL認証SQL 自体がユーザ管理機能を持っており、その認証を使う方法です。
デフォルトでユーザ名「sa」、パスワードなしの管理者用アカウントを標準で持っています。
Webなどでの説明は、この SQL 認証を基にした説明が多いです。
このユーザアカウントは、Windows のユーザとは完全に独立したものです。
ユーザを追加するためには、SQL サーバに対してユーザを追加するコマンドを発行する必要があります。

注意;
  SQL 認証の sa アカウントはデフォルトでパスワードが設定されていません。
  セキュリティホールになるので、パスワードを設定するようにしましょう。

最新のMSDEでは、インストール時のセキュリティも強化されており、必ず sa のパスワードをセットしないと、インストールができないようになっています。MSDEをダウンロード後に、setup.ini の中の Options で
次のように sa のパスワードをセットしてください。xxxx はパスワード。
セットアップ後は、このパスワードを消しておくこと。

[Options]
SAPWD=xxxxx

参考: MSDE をインストール後に、SQL の認証モードを変更する方法 (BBS No.99 橋本さんからの情報 m(_ _)m)
INF: How to Change the Default Login Authentication Mode to SQL While Installing SQL Server 2000 Desktop Engine by Using Windows Installerを参照してください。
MSSQLServerサービスが起動していたら停止し、レジストリエディタで
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\VSdotNET\MSSQLServer\LoginMode
の値を、1から2に変更してMSSQLServerサービスを再起動すればOKです。

では、Setup.exe を実行してください。
Image

すると、次のように Microsoft SQL Server Desktop Engine がインストールされます。

Image

7.MSDE の起動


C:\Program Files\Microsoft SQL Server\80\Tools\Binn にある SQL Server サービス マネージャ (sqlmangr.exe)から起動します。

Image

また、コントロールパネル→管理ツール→サービスを見ると、MSSQL が登録されます。
このサービスで起動することもできます。

Image

MSDE が起動したところで、サーバーエクスプローラから確認してみましょう。
次のようにサーバ名の下にデフォルトの master, mode, msdb, tempdb のデータベースが見えると思います。

Image

注意
もし、次のようにSQL Server の下に何も無い場合の対応方法
Image

(1) SQL Server を右クリックしてSQL Server インスタンスの登録を行います。
Image
(2) 次の SQL Server インスタンスの登録ダイアログが表示されます。
インスタンス名を空白のままOKを押します。
Image
これで、次のように SQL サーバインスタンスが表示されるようになります。
Image

8.テスト用のデータベースを作る

作り方

  1. サーバーエクスプローラから、SQL Server を右クリックして、”新しい SQL Server (D)" を選択します。
    Image
  2. ダイアログが表示されるので、サーバーに、xxxx\\VSdotNET、新しいデーターベース名に test を入力する。
    先に説明したように、"Windows NT の統合認証を使用"を選択します。
    Image

  3. すると、"test" というデータベースができます。
    Image

  4. 上図の test をダブルクリックすると、下図のようにテーブルのエントリが現れます。
    Image

  5. 上図の"テーブル"を右クリックして、"新しいテーブル"を選択します。
  6. すると、dbo.Table1 のデザインビューがVisual Studio 上で開くので、列の1番目から、適当なデータベーススキーマ (ここでは ID, Title)を入力する。データ型、長さは適当。
    ID には主キーを設定します。
    Image

    注意: このときのテーブル名は Table1 となっていますが、セーブする時点でテーブル名を聞いてきます。

  7. dbo.Table1 を上書き保存しようとすると、テーブル名を尋ねるダイアログが出るので、ここでは"Books" とします。
    サーバーエクスプローラ→test→テーブルを開くと、Books というテーブルができているのがわかります。
    Image

  8. 次にテスト用のデータを入力する。Books をダブルクリックすると、下図のようにテーブルが開きます。
    あとは、次のように ID, Title を適当に入力していくだけで、簡単なデーターベースができてしまいます。
    Image

以上で、データベースの作成は終わり。

9.MSDEのコマンドラインから確認してみよう

では、MSDE の osql コマンドラインから確認してみましょう。

1.cmd ウィンドウを起動します。
2.osql -E -で起動します。 -E は統合 Windows 認証するというオプションです。
この場合、Uchukamen でデータベースを作成していて、Uchukamen のアカウントでアクセスしていますから、
そのままアクセスできます。
3.データベースに接続できれば、1> というプロンプトが表示されるはずです。
4.use test で、使用するデーターベースを指定します。
5.select * from Books で、Books テーブルからすべての項目を選択する SQL 文を入力します。
6.go で実行すると、次のようにさきほど Visual Studio .NET で入力したデータが表示されるはずです。

Image

10.ODBC について(余談)

ADO.NET で作る分には関係ないですが、Windows のコントロールパネルの ODBC データソースアドミニストレータがあります。
このなかでいろいろドライバーがあり、同じAccess でも複数のドライバーが存在しています。
いったい何を選べってんじゃ!て感じですね。

Image

そこで、ODBC ドライバーと実体の関係を調べてみました。下の表参照。
レジストリーのパラメータコネクションのプールのタイムアウト)が若干違っていますが、ドライバーの実体は同じですね。

ODBCDriverCPTimeout
Driver do Microsoft Access (*.mdb)C:\WINNT\System32\odbcjt32.dll<プールされていません>
Microsoft Access Driver (*.mdb)C:\WINNT\System32\ODBCJT32.DLL60
Microsoft Access-Treiber (*.mdb)C:\WINNT\System32\odbcjt32.dll<プールされていません>
Microsoft Text Driver (*.txt; *.csv)C:\WINNT\System32\odbcjt32.dll<プールされていません>
Microsoft Excel Driver (*.xls)C:\WINNT\System32\odbcjt32.dll<プールされていません>
SQL ServerC:\WINNT\System32\SQLSRV32.dll60

日付 修正履歴
2002/4/30初期バージョン作成
2002/5/27改訂
2002/12/8改訂
2003/7/21MSDE SP3 にあわせて改訂
2004/10/30ダウンロード先リンク改訂