|
|
|
SQL Server 2000 Desktop Engine (MSDE 2000) は、SQL Server
をベースにしたデータベース エンジンで、、無償の再配布可能です。MSDEは、SQL Server
との完全な互換性があり、小規模なデータベースアプリケーションを作ることができます。 SQL Server
に比べて、管理用ソフト(EnterpriseManager)が無い、データ量が1つのデータベースあたり最大2GBまでに制限されているなどの制限があります。 しかし、Windows XPでも動くので、VS.NETでデータベース関連のプログラムを作るときに、MSDE
を使って、お気軽に試すことができます。 ここでは、まずMSDEのセットアップです。 |
|
(1) Microsoft
MSDE Home ここからMSDEをダウンロードできます。
(2) MSDN
ADO.NET の概要 ADO.NETについて解説している。
|
|
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
に移行しなさいということです。まあ、過去のしがらみはないので、古いものを調べないですむので助かりますが、過去の資産を持っている開発者は大変ですね。 |
新 |
|
|
|
|
注意 |
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
では、Setup.exe を実行してください。

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

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

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

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

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

(1) SQL Server を右クリックしてSQL Server インスタンスの登録を行います。

(2) 次の SQL Server インスタンスの登録ダイアログが表示されます。
インスタンス名を空白のままOKを押します。

これで、次のように SQL サーバインスタンスが表示されるようになります。

|
|
|
作り方
- サーバーエクスプローラから、SQL Server を右クリックして、”新しい SQL Server (D)" を選択します。

- ダイアログが表示されるので、サーバーに、xxxx\\VSdotNET、新しいデーターベース名に test を入力する。
先に説明したように、"Windows NT の統合認証を使用"を選択します。
- すると、"test" というデータベースができます。

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

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

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

- 次にテスト用のデータを入力する。Books をダブルクリックすると、下図のようにテーブルが開きます。
あとは、次のように ID, Title を適当に入力していくだけで、簡単なデーターベースができてしまいます。
以上で、データベースの作成は終わり。
|
|
では、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 で入力したデータが表示されるはずです。

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

そこで、ODBC ドライバーと実体の関係を調べてみました。下の表参照。
レジストリーのパラメータコネクションのプールのタイムアウト)が若干違っていますが、ドライバーの実体は同じですね。
ODBC | Driver | CPTimeout |
Driver do Microsoft Access (*.mdb) | C:\WINNT\System32\odbcjt32.dll | <プールされていません> |
Microsoft Access Driver (*.mdb) | C:\WINNT\System32\ODBCJT32.DLL | 60 |
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 Server | C:\WINNT\System32\SQLSRV32.dll | 60 |
|