第 1 章 : Microsoft Access 2000 クライアント/サーバー開発の理解

Mark Roberts
Microsoft Corporation

February 2000

対象: MicrosoftR Access 2000

概要 : この記事は、Microsoft Access 2000 のプロジェクト ファイルおよびツールによるクライアント/サーバー ソリューションの開発に関する、3 部シリーズの最初の記事です。ここでは、Access 2000 の開発者が利用できるさまざまなマルチユーザー アプリケーション アーキテクチャの概要を説明します。また、Access のプロジェクト ファイル (.adp) の機能を紹介し、Microsoft Data Engine (MSDE) について説明し、Microsoft SQL Server または MSDE をバック エンド データベースとして使用することによるコスト上の利点を解説します。Northwind Traders サンプルの Microsoft Access プロジェクト (NorthwindCS.adp) のインストール方法も説明します。

内容

はじめに
Access クライアント/サーバー プロジェクトとは
Access 2000 クライアント/サーバー ソリューションとは
Access プロジェクト ファイルについて
Access 2000 クライアント/サーバーの機能と相違点
要約

はじめに

この記事は、3 部シリーズ の最初の記事で、Microsoft Access 2000 を使用してクライアント/サーバー ソリューションを開発する方法について説明します。ここでは、クライアント/サーバー開発の利点と他の種類の Access 開発との相違点について解説します。また、Access 2000 の新機能の概要を紹介します。これらの機能を使用することで、クライアント/サーバー ソリューションの開発は従来よりも簡単で強力なものになります。

この後の記事では、State University という新しいサンプル クライアント/サーバー アプリケーションの開発を示して、具体的な例に焦点を当てます。このサンプル アプリケーションは、架空のコンピュータ教育会社に関するもので、この会社では教育コース、受講者、講師、資料、登録に関する情報を把握する必要があります。

Access クライアント/サーバー プロジェクトとは

一見したところ気がつきませんが、Microsoft Access 2000 は、実際は 下記の2 つを 1 つにしたような製品です。

  • .mdb ファイルを使用する、デスクトップおよび小規模のワークグループ データベース ソリューションを開発するための実績のある製品の最新のバージョンと、データを管理する Microsoft Jet データベース エンジンです。

  • OLE DB ネイティブモード アクセスを使用して SQL Server 6.5、SQL Server 7.0、または Microsoft Data Engine (MSDE) に接続し、バック エンド データベースを管理するクライアント フロント エンド アプリケーションを開発するためのまったく新しい製品です。MSDE は、SQL Server 7.0 と完全に互換性がある新しいデータ エンジンで、デスクトップ、モバイル、および SQL Server 7.0 に簡単に移行する共有ソリューションを構築するためのものです。これについては、後で詳しく説明します。

Access 2000 のユーザー インターフェイスとオンライン マニュアルでは、これらの 2 種類のデータベース ソリューションの開発を 2 つの漠然とした用語で表しています。.mdb ファイル形式と Jet データベース エンジンを使用する従来の開発モードは、"Access データベース" の開発と呼ばれています。SQL Server や MSDE データへの接続に新しい .adp ファイル形式を使用する新しいフロント エンド クライアント開発モードは、"Access プロジェクト" の開発と呼ばれています。"Access プロジェクト" という名前の基本的な考え方としては、.adp ファイルにデータ オブジェクトではなく、フォームやモジュールなどの単一のプロジェクトまたはアプリケーション オブジェクトとして保存するということです。データ オブジェクトは別のデータベース サーバーに保存する必要があります。

以前から Access を使用している方は、この新しいクライアント/サーバー ソリューション開発モードは Access の以前のバージョンの機能とそれほど変わらないように思えるかもしれません。Access の以前のバージョンでは、 Microsoft SQL Server ODBC Driver などの ODBC (オープン データベース コネクティビティ) ドライバを使ってデータベース サーバーのテーブルに接続するリンク テーブル ("添付されたテーブル" とも言う) を使用するフロント エンド .mdb ファイルを作成することで、クライアント/サーバー ソリューションを作成できました。.mdb ベースのクライアント/サーバー ソリューションの場合、Access はデータベースを開いたりリンク テーブルを管理するために Jet データベース エンジンおよび ODBC コンポーネントをロードする必要があるため、メモリのオーバーヘッドが増加します。さらに、リンク テーブルを含む .mdb ファイルでは、コードや SQL Server Enterprise Manager を使用しなければデータベースの設計を行うことができません。

Access 2000 はリンク テーブルを含む .mdb ファイルを使用したクライアント/サーバーを引き続きサポートしますが、新しい .adp ファイル形式とデータアクセス アーキテクチャもサポートします。これによって、Jet データベース エンジンをロードせずに、OLE DB コンポーネントを通して SQL Server 6.5 (Service Pack 5 を含む)、SQL Server 7.0、または MSDE データベースに接続するクライアント アプリケーションを作成することができます。Access プロジェクト (.adp) ファイルには、ソリューションのクライアント部分を構成するフォーム、レポート、データ アクセス ページへのリンク、マクロ、および Visual BasicR for Applications (VBA) モジュールのみが保存されます。Access は SQL Server や MSDE バック エンド データベースに保存されているテーブル、ビュー、ストアド プロシージャ、およびデータベース ダイアグラムを表示したり、また、データに対して直接作業するために、OLE DB 接続を使用します。Access プロジェクトでフォーム、レポート、およびモジュールを作成するには、これらのオブジェクトを Access データベースで作成するときに使うツールやウィザードとほとんど同じものを使用します。Access 2000 には、Access のユーザー インターフェイスから SQL Server や MSDE にオブジェクトを直接作成したり変更することができる新しい一連の視覚的なツールも用意されています。これらの機能を使用することで、SQL Server や MSDE バック エンドに対する作業を直接行える強力なクライアント/サーバー ソリューションを簡単に開発できます。

注意 :    Access プロジェクト ファイルでデータベースへの接続に OLE DB 接続を使用しても、この接続に 特定のOLE DB プロバイダを使用することはできません。使用できるのは、Microsoft OLE DB Provider for SQL Server (SQLOLEDB) のみで、接続できるのは SQL Server 6.5 (Service Pack 5 を含む)、SQL Server 7.0、または MSDE データベースのみです。ただし、Access プロジェクトで実行される ActiveXR データ オブジェクト (ADO) コードから他の OLE DB プロバイダを使用すれば、他のデータ ソースをプログラム的に使用することができます。

Access 2000 クライアント/サーバー ソリューションとは

簡単に言えば、クライアント/サーバー ソリューションとは、ネットワーク サーバー上にあるサーバー コンポーネント、つまり "バック エンド データベース" のデータを使用する各ユーザーのコンピュータに "フロント エンド" クライアント コンポーネントをインストールしたアプリケーションのことです。この大まかな定義を使用すると、Microsoft Access は、複数のユーザー間でデータベースを共有するさまざまな方法を備えていることになり、各方法をある種のクライアント/サーバー ソリューションと見なすことができますが、このシリーズの目的に従って、クライアント コンポーネントである Access プロジェクト ファイル (.adp) を使用して、サーバー コンポーネントである Microsoft SQL Server または MSDE に接続することを "Access クライアント/サーバー ソリューション" という用語で表すことにします。Access 2000 で .mdb ファイルのリンク テーブルを使用したクライアント/サーバー ソリューションを開発することはできますが、ここでは Access プロジェクトを使用したクライアント/サーバー ソリューション開発に焦点を当てて説明します。

Access 2000 マルチユーザー データベース アプリケーションのアーキテクチャ

以下の一覧は、ネットワーク上の複数のユーザー間で共有されるデータベース ソリューションの開発のために Microsoft Access によって提供される 4 つの主な方法の違いを明らかにするためのものです。

  • ファイルサーバー データベース ソリューション

    ファイルサーバー ソリューションは、Access データベース (.mdb) をネットワークの共有領域にコピーして、複数のユーザーが開いたり共有したりできるようにすることで実装する、最も簡単な形式です。より洗練された方法にするには、"フロント エンド/バック エンド ソリューション" を作成します。これは、ネットワークのファイル サーバーのバック エンド Access データベース (.mdb) に接続するリンク テーブルを含む各ユーザーのコンピュータ上で実行されるフロント エンド Access データベース (.mdb) を使用するソリューションです。フロント エンド/バック エンド ソリューションは、クライアント (フロント エンド) コンポーネントとサーバー (バック エンド) コンポーネントの両方があるという点でクライアント/サーバー ソリューションに似ていますが、バック エンド コンポーネントがネットワーク ファイル サーバー上の単なる .mdb ファイルであるという点、およびバック エンドとの通信を管理しているデータベース エンジンが実際は複数の Jet データベース エンジンのコピーで構成されていて、それぞれがクライアント ワークステーションから実行されている点が重要です。

    いずれのファイルサーバー ソリューションも、Access ツールとデータ アクセス オブジェクト (DAO) または ADO プログラミング モデルを使用することで簡単に実装できますが、ファイルサーバー ソリューションを使用する場合は次のような制限があります。

    • ファイルサーバー ソリューションは 255 人までの同時ユーザーに対応できますが、ソリューションのユーザーがデータベースの追加や変更を頻繁に行う場合は、Access ファイルサーバー ソリューションの最適なユーザー数は通常 25 ~ 50 人までです。

    • ファイル サーバー上のデータベースの保守は、SQL Server などのデータベース サーバーを使用する場合と比べると本質的に信頼性が劣ります。データを書き込み中にユーザーのワークステーション、ネットワーク接続、またはファイル サーバーで障害が発生した場合、データベース ファイルが壊れたり、不整合な状態になる可能性があるからです。

    • 使用するファイルサーバー ソリューションの種類に関わらず、各ユーザーのワークステーションで実行されているデータベース エンジンからネットワークのファイル サーバーに送られる複数の要求によって余分なネットワーク トラフィックが発生します。

  • データベース レプリケーション ソリューション

    データベース レプリケーション ソリューションは通常、ネットワークに断続的に接続するユーザー (ラップトップ ユーザーなど) や低速の広域ネットワーク (WAN) に接続しているユーザーの間で Access データベース (.mdb) を共有するために使用します。データベース レプリケーションは、複数の場所にある Access データベースのすべてのコピーに対して、変更されたデータやデータベース設計への変更のみを配布するという処理です。レプリケーションでは、"デザイン マスター" と呼ばれる単一のオリジナル データベースの、"レプリカ" と呼ばれる 1 つまたは複数のコピーが作成されます。デザイン マスターとそのレプリカを合わせて "レプリカ セット" と呼びます。"同期" と呼ばれる処理を実行すると、オブジェクトやデータへの変更がレプリカ セットのすべてのメンバーに配布されます。

    データベース レプリケーション ソリューションにおけるデータの信用性は、同期の頻度とユーザー間の接続速度によって制限されます。データベース レプリケーション ソリューションは通常、低速または断続的な接続を常とする状況で使用します。したがって、データベース レプリケーションは、割り当てられた地域のいくかの地区を扱う外回りの営業担当者など、ユーザーどうしで競合が起きる可能性が低い場合に最適に機能します。Access/Jet レプリケーション ソリューションは、レプリケーション セットのメンバーをローカル エリア ネットワーク (LAN) 上の複数のファイル サーバーに配置することで、ネットワーク間の負荷分散として使用することもできます。

    注意 :    SQL Server にも同様に "発行および購読" モデルを使用するレプリケーション機能があります。SQL Server のレプリケーション機能の詳細については、 https://download.microsoft.com/download/SQL70/File/2/Win98/En-US/SQLBOL.exe Non-MSDN Online link からダウンロードできる『 SQL Server Books Online 』、または Microsoft SQL Server の Web サイト Non-MSDN Online link を参照してください。

  • Web ベース データベース ソリューション

    Web ベースのソリューションは、共有されている Access または SQL Server データベースに接続されるフロント エンド クライアントとして 1 つまたは複数の Web ページを使用します。バック エンド データベースのデータを使用する Web ページの開発方法にはいろいろあります。たとえば、テキスト エディタやスクリプト作成エディタを使って作成できる Active Server Pages (.asp ファイル) や、Microsoft Visual InterDevR などのツールがあります。Access 2000 の "データ アクセス ページ" と呼ばれる Web ページの新しいフォームを使って Access または SQL Server データベースに接続することができます。データ アクセス ページは Microsoft Data Source Control (MSODSC)、および Microsoft Office Web コンポーネントを呼び出す一連のコントロールの一部であるその他の ActiveX コントロールを使用します。これらのコンポーネントは Office 2000 のライセンスを持っているユーザーによってインストールされます。また、データ アクセス ページを使うには、Microsoft Internet Explorer 5 以降を実行する必要があることに注意してください。

    Web ベースのデータベース ソリューションは、Microsoft Access をインストールしていないユーザーや、新しいクエリまたはレポートの作成などの Access の機能を使用する必要がないユーザーにとっては最適な選択です。

  • クライアント/サーバー データベース ソリューション

    クライアント/サーバー ソリューションは、Access 2000 プロジェクト ファイル (.adp) を使って開発されたクライアント アプリケーションを使用します。このプロジェクト ファイルを各ユーザーに配布して、ユーザーが自分のコンピュータから SQL Server や MSDE データベースにアクセスできるようにします。SQL Server または MSDE データベースを利用するクライアント/サーバー データベース ソリューションの開発には、Visual Basic プログラミング環境やその他の Visual StudioR ツールも使用できますが、これらのツールを使用してクライアント/サーバー アプリケーションを実装する方法の説明については、ここでは扱わないことにします。Access 2000 を使用して SQL Server データベースに作成されたサーバー側オブジェクトは、ほかのツールを使用して開発されたクライアント/サーバー アプリケーションから使うこともできます。

    ソリューション開発においてクライアント/サーバー モードを区別することの主な利点は、すべてのデータが専用のデータベース サーバーで制御されるということです。次のセクションでは、SQL Server などのデータベース サーバーを使うことのその他の利点について詳しく説明します。

データベース サーバーの利点

クライアント/サーバー ソリューションの使用を決定する要因には、主に拡張性と信頼性の 2 つがあります。ユーザーを 25 人から 50 人まで拡大する必要がある場合は、ファイルサーバー ソリューションではなく、クライアント/サーバー ソリューションを使用することを検討する必要があります。また、ファイルサーバー データベースでは、データベースをファイル システムのファイルとして維持するため、本質的に信頼性に制限があります。データベース ファイルに書き込むトランザクションやその他の操作中にクライアントまたはサーバーのコンピュータ (またはその間の接続)のいずれかに障害が発生すると、データベースは簡単に壊れてしまいます。SQL Server などのデータベース サーバーの制御下ですべてのデータベース ファイルを分離することで、クライアント/サーバー アーキテクチャは、より信頼性を高め、高度な機能を実現します。これらの機能はファイルサーバー アーキテクチャで提供することはできないものです。以下にいくつかの例を示します。

  • オンライン バックアップ

    データベース サーバーを使用する場合、自動スケジューラを使用して、データベースからユーザーを締め出す必要なく、データベースをバックアップすることができます。

  • 丈夫なトランザクション

    SQL Server および MSDE はトランザクションのログを記録し、クライアントまたはサーバー コンピュータに障害が発生した場合に、トランザクション内で行われた更新をいつでも修復したり、最新の整合性のある状態にロールバックできるようにします。Microsoft Jet データベース エンジンおよび .mdb ファイルにもトランザクションはありますが、.mdb ファイルのトランザクション は別のトランザクション ログによって管理されていません。データベース ファイルが壊れた場合、トランザクションが失敗し、修復できない可能性があります。

  • 高い信頼性とデータの保護

    .mdb ファイルへの書き込み中にワークステーションまたはファイル サーバーで障害が発生した場合、データベースが壊れる可能性があります。壊れたデータベースは通常、最適化や修復を行うことで復元できますが、その前にすべてのユーザーにデータベースを閉じてもらう必要があります。Microsoft SQL Server や MSDE のようなサーバー データベースでは、このようなことはほとんど起こりません。

  • 高速なクエリ処理

    .mdb ファイルを使用する場合は、ファイルの場所に関係なく、クエリをクライアント上で処理するために、ソリューションで Jet データベース エンジンをローカルにロードする必要があります。大規模なデータベースの場合は、これは大量のデータをネットワーク上で移動することになります。反対に、SQL Server はクエリをサーバー上で実行します。サーバーは通常は、クライアント ワークステーションよりも処理能力の高いコンピュータです。サーバーでクエリを実行することで、Access ファイルサーバー ソリューションの場合よりもサーバーの負荷が増しますが、特にユーザーがデータの一部を選択している場合は、ネットワーク トラフィックが大幅に減ります。

  • 優れたハードウェア サポート

    無停電電源装置、ホットスワップ可能なディスク ドライブ、およびマルチ プロセッサはすべて、クライアント ワークステーションを変更せずにサーバーに追加できます。

  • Windows NT セキュリティとの統合

    SQL Server および MSDE サポートは両方とも Windows NTR セキュリティ アカウントを使用してデータベースにログオンするユーザーを認証します。これは、Access/Jet データベースのセキュリティとは異なり、データベース サーバーにアカウントを作成して管理するのではなく、ユーザーが Windows NT ネットワークに既にログオンしている場合は、既存の Windows NT セキュリティ グループとアカウントを使用してデータベースの権限を定義できることを表しています。

  • 高度なサーバー側プログラミングとビジネス ルールのサポート

    Microsoft SQL Server および MSDE は、Transact-SQL と呼ばれる多機能な SQL 言語をサポートします。Transact-SQL を制約やトリガなどの機能とあわせて使用すると、データベースのすべてのユーザーに対して適用されるサーバーのビジネス ルールおよびセキュリティ ルールを定義することができます。また、Transact-SQL を使用してサーバー上で実行するストアド プロシージャを作成し、どのクライアントからでもデータに柔軟かつ安全にアクセスできるようにすることもできます。

Access プロジェクト ファイルについて

本書およびこのシリーズの残りの部分を有効に利用するには、Access 2000 と Northwind Traders サンプルの Microsoft Access プロジェクト (NorthwindCS.adp) をインストールしておく必要があります。また、NorthwindCS.adp ファイルを使用するには、Microsoft SQL Server 6.5 (SQL Server Service Pack 5 以降を含む)、Microsoft SQL Server 7.0 (Small Business Server、Standard、Enterprise、Desktop Edition のいずれか)、または Microsoft Data Engine (MSDE) 1.0 を実行しているコンピュータへのアクセス権も必要です。

Microsoft Data Engine とは

Microsoft Data Engine (MSDE) は新しいデータベース エンジンで、Microsoft SQL Server 7.0 と完全に互換性があるローカル データ ストレージを提供します。MSDE を使用して、データを小規模なワークグループ データベース サーバーとして共有することもできます。MSDE は Windows NT 4.0 以降および WindowsR 95 以降で動作します。MSDE は、シングルユーザー コンピュータや小規模ワークグループ サーバーなど、小規模なコンピュータ システム上で使用するように設計および最適化されています。

MSDE ではデータベースに接続できるユーザー数は制限されていませんが、5 人のユーザー向けに最適化されています。ユーザー数がそれ以上の場合は、SQL Server 7.0 を使用する必要があります。MSDE で作成されたデータベースは SQL Server 7.0 と完全に互換性があり、ほとんどの Transact-SQL コマンドなど、SQL Server 7.0 の多くの機能をサポートします。SQL Server と同様、MSDE もトランザクションのログを記録します。つまり、MSDE データベースへの書き込み中にディスク エラー、ネットワーク障害、電源故障などの問題が発生しても、トランザクション ログを使用して最新の整合性のある状態に修復することができるということです。これによって MSDE データベースは、トラザクションのログを記録しない Microsoft Jet (.mdb) データベースよりも優れた信頼性が得られます。

MSDE は SQL Server と同じデータベース エンジンに基づいているため、ほとんどの Access プロジェクトまたはクライアント/サーバー アプリケーションを変更せずに SQL Server または MSDE のどちらでも実行できます。ただし、 SQL Server 7.0 とは異なり、MSDE には 2 ギガバイト (GB) のデータベース サイズ制約があり、対称マルチプロセッシング (SMP) に対して 3 つ以上のプロセッサをサポートしていません。また、レプリケートされているデータベース環境をトランザクション レプリケーションに対するレプリケーション パブリッシャにすることができません (トランザクション レプリケーションおよびマージ レプリケーションの両方についてはレプリケーション サブスクライバに、またマージ レプリケーションに対してはレプリケーション パブリッシャにすることができます)。

Access と Microsoft Jet データベース (.mdb) を使う場合と比べると、MSDE を使う場合は高速なプロセッサおよび多くのメモリを必要とします。MSDE の実行をサポートする最低構成は、Pentium 166 および 32 MB の RAM ですが、MSDE はメモリ使用を動的に管理することができるため、効率的に使用できるようにできるだけ多くのメモリを割り当てたり、あるいは必要に応じて割り当てを取り消し、他のアプリケーションがメモリを使用できるようにメモリを解放することができます。ソリューションでメモリ リソースをそれほど必要としない場合は、むしろ Access と Microsoft Jet データベースを使用することをお勧めします。

Access (Jet) データベースの代わりに、MSDE を以下の方法でデスクトップ データベースとして使用することを考慮してください。

  • 小規模ワークグループ サーバー データベースとして。ワークグループおよびビジネス要件が時間と共に成長し、最終的には大規模なネットワーク サーバーで実行する SQL Server 7.0 の完全な機能を使う必要性が生じることを見越して、MSDE に接続された Access プロジェクトを使ってソリューションを開発することができます。

  • SQL Server のレプリケートされているデータベース環境でレプリケーション サブスクライバとして。たとえば、ラップトップや接続されていないコンピュータで MSDE にアクセスし更新を行うような作業をしていて、マスター SQL Server データベースに定期的に接続して変更の整合性を取得するユーザーがいる場合などです。

  • パーソナル コンピュータまたはワークステーション上の Access プロジェクトまたはクライアント/サーバー アプリケーションを簡単に開発およびテストするために。最終テストまたは展開の際に、Access プロジェクトの接続情報を変更して、リモート サーバー上の SQL Server データベースに接続することができます。

MSDE をインストールする

Access 2000 プロジェクト ファイルと互換性があるデータベース サーバーを使用する最も簡単な方法は、MSDE 1.0 をインストールすることです。これは、Microsoft Access 2000 のスタンドアロン エディションだけでなく、Microsoft Office 2000 のすべてのエディションに含まれています。MSDE は Office 2000 や Access 2000 のセットアップの一部としてはインストールされませんので、インストールする場合はセットアップ プログラムを別途に実行する必要があります。Microsoft Windows 95 以降または Microsoft Windows NT Workstation 4.0 以降が稼動しているコンピュータ上であれば、MSDE をインストールすることができます。Microsoft Windows NT Workstation 4.0 に MSDE をインストールする前に Service Pack 4 以降もインストールしておく必要があります。MSDE に必要なディスク領域は、必要なコンポーネントのうちどれが既にインストールされているかによって異なります。標準インストールの場合は約 55 MB の空きディスク領域が必要です。

MSDE 1.0 をインストールするには

  1. Microsoft Office 2000 Disc 1 または Microsoft Access 2000 のディスクを CD-ROM ドライブに挿入します。

  2. \SQL\x86\Setup フォルダを開きます。

  3. Setupsql.exe をダブルクリックします。MSDE セットアップ プログラムの既定の選択をそのまま使用してください。必要な場合は、インストール後に MSDE を再構成することができます。

MSDE をコンピュータにインストールしたら、SQL Server サービス マネージャを使用してサーバー コンポーネントを起動する必要があります。起動するには、タスク バーで [SQL Server サービス マネージャ] アイコンをダブルクリックし、[サービス] ボックスで MSSQLServer が選択されていることを確認し、[起動/再開] をクリックします。Windows NT 4.0 以降の場合、MSDE は既定で MSSQLServer サービスを自動的に起動します。[SQL Server サービス マネージャ] ウィンドウの [OS 起動時にサービスを自動的に開始] チェック ボックスをオンにすると、Windows 95 以降でも MSDE を自動的に起動することができます。タスク バーの [SQL Server サービス マネージャ] アイコンを使用できない場合は、Windows の [スタート] ボタンをクリックし、[プログラム] をポイントして [MSDE] をポイントし、[サービス マネージャ] をクリックすることで起動できます。

既定では、MSDE のセキュリティは、空のパスワードを割り当てられている単一の "システム管理者" (sa) アカウントで構成されています。sa アカウントにパスワードを設定していない場合、または Access 2000 の [データベース セキュリティ] ([ツール] メニューの [セキュリティ] サブメニュー) を使用して [SQL Server セキュリティ] ダイアログ ボックスを表示して MSDE セキュリティを再構成した場合、このアカウントを使ってデータベースへのログオン、データベース オブジェクトの作成、およびその他の操作を行うことができます。Microsoft Access のヘルプおよび [SQL Server セキュリティ] ダイアログ ボックスにある [ヘルプ] ボタンは、SQL Server のセキュリティについては最低限の情報しか提供しません。SQL Server のセキュリティの詳細については、『 SQL Server Books Online 』を参照してください (『 SQL Server Books Online 』で MSDE について言及することはほとんどありませんが、『 SQL Server Books Online 』内の情報は SQL Server だけでなく MSDE にも適用されることに注意してください)。

注意 :    

  • MSDE を Windows 95 または 98 にインストールする場合、コンピュータを再起動を確認する画面は表示されませんが、インストールされたコンポーネントすてべを使用できるようにするためには、再起動する必要があります。

  • Microsoft Windows 95 または Windows 98 を実行しているコンピュータは、多くのアプリケーションで既定のネットワーク ライブラリとして使用されている名前付きパイプ接続を受け付けません。MSDE をこれらのコンピュータにインストールする場合、サーバーへの接続に名前付きパイプを使用しているクライアントは、別のネットワーク ライブラリを使用するようにリダイレクトする必要があります。この問題への対応方法については、 https://support.microsoft.com/kb/q198977/ Non-MSDN Online link にある Knowledge Base の Q198977 (英語) を参照してください。

  • Transact SQL の SELECT @@VERSION ステートメントを使用するか、または xp_msver システム ストアド プロシージャを MSDE 1.0 で使用すると、製品名 "Microsoft SQL Server" とバージョン番号 7.00.xxx が返されます。Office 2000 または Access 2000 CD-ROM の \SQL\x86\Setup フォルダからインストールした MSDE 1.0 のリリースは、バージョン 7.00.623 です。MSDE の最新の修正版を利用するために、最新の Service Pack を適用することをお勧めします。現時点での最新版は Service Pack 1 です。Service Pack 1 を適用すると、MSDE はバージョン 7.00.699 にアップデートされます。Service Pack 1のダウンロードおよびインストールについては、https://support.microsoft.com/kb/q232570/ Non-MSDN Online link にある Knowledge Base の Q232570 (英語) を参照してください。

MSDE をインストールすると、データ変換サービス ウィザードもインストールされます。このウィザードを使用することで、OLE DB プロバイダまたは ODBC ドライバを使用してデータをインポートまたはエクスポートして、データの転送および確認を行うことができます。MSDE のインストール後、データ変換サービス ウィザードを実行するには、[スタート] ボタンをクリックし、[プログラム] をポイントして [MSDE] をポイントし、[データのインポートとエクスポート] をクリックします。データ変換サービス ウィザードは、MSDE と SQL Server 7.0 間でオブジェクトおよびデータを転送するために使用することもできます。たとえば、Access および MSDE を使用してクライアント/サーバー ソリューションのプロトタイプを作成する場合、データ変換サービス (DTS) ウィザードを使用して MSDE から SQL Server 7.0 にバック エンド オブジェクトおよびデータを転送できます。DTS ウィザードの使用例については、 「第 2 章 : Microsoft Access 2000 クライアント/サーバー データベースの実装」の「データ変換サービス ウィザードを使ってデータをインポートする」を参照してください。データ変換サービス ウィザードの使用方法の詳細については、DTS インポート ウィザードおよび DTS エクスポート ウィザードのヘルプ ファイル (Dtswiz70.chm) を参照してください。これは、既定で C:\Windows\Help フォルダにインストールされます。

Northwind Traders サンプル Microsoft Access プロジェクトをインストールする

Access プロジェクト ファイルのクライアント/サーバー ソリューションで利用できるさまざまな機能を理解するには、Northwind Traders サンプル Microsoft Access プロジェクトをインストールする必要があります。サンプルの Access プロジェクトは既定ではインストールされません。SQL Server 7.0 や MSDE などのバック エンド サーバーの可用性に依存するからです。ローカルまたはリモート データベース サーバーが利用でき、そのサーバー上にオブジェクトを作成するための権限があれば、サンプル Access プロジェクトをインストールして開くことができます。サンプル Access プロジェクトを開くには、起動時に表示される "スタートアップ" ダイアログ ボックスで [既存のファイルを開く] をクリックし、一覧で [ノースウィンド SQL プロジェクト ファイル] をダブルクリックします。スタートアップ ダイアログ ボックスで [ノースウィンド SQL プロジェクト ファイル] が表示されない場合は、前に説明した手順に従って Microsoft Office 2000 または Microsoft Access 2000 のセットアップを再実行することで、インストールすることができます。

Northwind SQL プロジェクト ファイルを Office 2000 または Access 2000 セットアップからインストールするには

  1. コントロール パネルの [アプリケーションの追加と削除] をダブルクリックします。

  2. [インストールと削除] タブで、[Microsoft Office 2000 Professional][Microsoft Office 2000 Premium]、または [Microsoft Access 2000] のいずれかをクリックし、[追加と削除] をクリックします。

  3. [メンテナンス モード] ダイアログ ボックスで [機能の追加/削除] をクリックします。

  4. [Microsoft Access for Windows][サンプル データベース] を展開し、[ノースウィンド SQL プロジェクト ファイル][マイ コンピュータから実行] に設定して、[完了] をクリックします。

ノースウィンド SQL プロジェクト ファイルは、既定では NorthwindCS.adp という名前で C:\Program Files\Microsoft\Office\Samples フォルダにインストールされます。

NorthwindCS.adp を初めて開くと、Startup モジュール内のコードがバック エンド データベースとして使うために SQL Server または MSDE のコピーを探そうとします。使用しているサーバーや、そのサーバーがローカルにインストールされているかどうかによって、次のいずれかが発生します。

  • SQL Server 7.0 をローカルで実行している場合は、NorthwindCS.adp ファイルは ( sa アカウントと空のパスワードを使用して) サーバーにログオンを試み、プロジェクトを SQL Server 7.0 と共にインストールされた Northwind データベース (テーブルおよびその他のサーバー側オブジェクト) に自動的に接続します。

  • SQL Server 6.5 または MSDE をローカルで実行している場合は、サンプル データベースのインストールを確認する画面が表示されます。データベース サーバー上に NorthwindCS.adp ファイルで必要となるデータベース、テーブル、およびその他のサーバー側オブジェクトを作成するには、 [はい] をクリックします。Startup モジュールのコードは ADO コードを使用して新規データベースを作成し、NorthwindCS.sql スクリプト ファイルを実行して、サーバー側データベース オブジェクトを作成および移行するため、インストールには数分かかります。

  • SQL Server または MSDE をローカルで実行していない場合は、[データ リンク プロパティ] ダイアログ ボックスが表示され、ここで SQL Server または MSDE を実行しているリモート コンピュータを選択できます。リモート サーバーを選択し、サーバーにログオンするために必要な情報 (この情報については、サーバー管理者に問い合わせてください) を入力し、サーバー上のデータベースを選択します。SQL Server 7.0 を実行しているコンピュータを選択した場合は、Startup モジュールのコードは SQL Server 7.0 と一緒にインストールされたノースウィンド サンプル データベースに自動的に接続します。それ以外のコンピュータを選択した場合は、新しいサンプル データベースの作成を確認する画面が表示されます。

注意 :    SQL Server 7.0 と共にインストールされるノースウィンド サンプル データベースの構造は、MSDE および SQL Server 6.5 用の Startup モジュールのコードから作成されたデータベースの構造と若干異なっています。たとえば、SQL Server 7.0 と共にインストールされる Northwind データベースには、いくつかのテーブルとストアド プロシージャが追加されています。さらに、SQL Server 7.0 のサンプル データベースは "Northwind" という名前ですが、SQL Server 6.5 および SDE 用に作成されるサンプル データベースは "NorthwindCS" という名前です。これらの相違が Northwind SQL Server プロジェクト ファイルの機能に影響を与えることはありませんが、Startup モジュールのコードの内容を変更すれば、SQL Server 7.0 で NorthwindCS データベースを作成できるようにすることができます。このためには、NorthwindCS プロジェクト ファイルの Startup モジュールを開き、宣言セクションで次のようなコード行を入力します。

Public Const NwindSQL = ""

重要 :    NorthwindCS バック エンド データベース オブジェクトを作成するために、初めてサーバーにログオンしたとき、サーバーにログオンするために [データ リンク プロパティ] ダイアログ ボックスに SQL Server のユーザー名とパスワードを入力する必要がある場合は、[パスワードを保存する] チェック ボックスもオンにする必要があります。これは Startup モジュールのコードがサーバーに正常に接続し、NorthwindCS サンプル データベースを作成するために必要です。NorthwindCS サンプル データベースが作成されたら、必要に応じて [パスワードを保存する] チェック ボックスをオフにできます。この手順は、Windows NT 統合セキュリティを使用してサーバーにログオンしている場合は必要ありません。

Northwind Traders サンプル Microsoft Access プロジェクトをインストールし実行すると、その機能を見ることで Access プロジェクトを使用して作成されたクライアント/サーバー ソリューションがどういうもので、どのように機能するかをさらに理解することができます。Access プロジェクトのオブジェクトを作成した方法の概要をオンラインで読むには、それを開いてからメニュー バーの [ヒント] をクリックします。このシリーズの後半では、サンプル Access プロジェクトおよび新しい State University サンプル アプリケーションの作成時の開発問題について説明します。

Access 2000 クライアント/サーバーの機能と相違点

このセクションでは、Access プロジェクト ファイルの機能およびアクセス アーキテクチャの概要を説明し、従来の Access/Jet 開発との違いを明確にします。このシリーズの次の 2 つの記事では、詳細情報と State University サンプル アプリケーションなどによる具体例を示します。

データ ソースに接続する

Microsoft Access プロジェクト ファイルは、OLE DB コンポーネント アーキテクチャを介した Microsoft SQL Server または MSDE への効率的なネイティブモード アクセスを提供します。OLE DB は、COM ベースのデータベース アーキテクチャであり、リレーショナル データ、メール ファイル、フラット ファイル、およびスプレッド シートを含む各種データ ソースへの効率的なネットワークおよびインターネット アクセスを実装します。 OLE DB アーキテクチャでは、データにアクセスするアプリケーション (Microsoft Access 2000、Microsoft Visual Basic 6.0 など) はデータ コンシューマと呼ばれ、データへのネイティブ アクセスを可能にするコンポーネント (Microsoft OLE DB Provider for SQL Server、Microsoft Jet 4.0 OLE DB Provider など) はデータベース プロバイダと呼ばれます。Access プロジェクト ファイルは、Office 2000 や Access 2000 と共にインストールされている SQL Server および MSDE データベースへの接続に、Microsoft OLE DB Provider for SQL Server およびその他の OLE DB コンポーネントを利用します。

Microsoft Access プロジェクト ファイルは次のいずれかのデータ ソースにのみ接続できます。

  • Microsoft SQL Server 6.5 (SQL Server Service Pack 5 以降を含む)

  • Microsoft SQL Server 7.0 (Small Business Server、Standard、Enterprise、Desktop Edition のいずれか)

  • Microsoft Data Engine (MSDE) 1.0 (SQL Server 7.0 と機能上の互換性がある)

Access プロジェクトを Microsoft Access ユーザー インターフェイスで開くと、[ファイル] メニューの [接続] を使用して、[データ リンク プロパティ] ダイアログ ボックス (図 1.1 を参照) を表示することができます。このダイアログ ボックスでは、Access プロジェクトの接続情報を定義します。

Aa139930.apg0101(ja-jp,office.10).gif
図 1.1 [データ リンク プロパティ] ダイアログ ボックス

注意 :    [データ リンク プロパティ] ダイアログ ボックスの [データベース ファイルをデータベース名として添付する] オプションは、SQL Server 7.0 および MSDE データベースで使用される .mdf ファイル形式に対してのみ有効です。.mdf ファイルは、これらのサーバーで使用される単一ファイル データベース形式です。SQL Serverの以前のバージョンでは、データベースは論理デバイス上にありましたが、SQL Server 7.0 および MSDE では、データベースはオペレーティング システム ファイル内に存在します。.mdf ファイルを使用することで、SQL Server 7.0 および MSDE は、データベース ファイルをあるサーバーから別のサーバーに移動、コピー、または電子メールで送信し、それらのファイルをターゲット サーバーにリンクすることで、データベースの移動をサポートします。[データベース ファイルをデータベース名として添付する] オプションを使用すると、実際には 2 つの操作が行われます。(1).mdf ファイルをターゲット サーバーにリンクする操作と、(2) Access プロジェクト ファイル (.adp) と新しくリンクされたデータベース間の接続を作成する操作です。.mdf ファイルの機能の詳細については、『 SQL Server Books Online 』の [キーワード] タブで「CREATE DATABASE」と入力して検索を行ってください。[データ リンク プロパティ] ダイアログ ボックスを使用して .mdf をサーバーにリンクする例については、「第 2 章 : Microsoft Access 2000 クライアント/サーバー データベースの実装」 の「サンプル アプリケーションをインストールする」を参照してください。

既存の SQL Server または MSDE データベースに接続される Access プロジェクトを新規に作成すると、[データ リンク プロパティ] ダイアログ ボックスが自動的に表示されます。Access プロジェクトを作成するときの [データ リンク プロパティ] ダイアログ ボックスの使用方法については、この記事の次のセクションで説明します。

Access プロジェクトファイルを作成し、接続する

新しい Access プロジェクト ファイルを作成する場合、既存の SQL Server や MSDE データベースに接続するか、またはサーバー上に新しいデータベースを作成するためのウィザードを実行することができます。他のユーザーによって管理されているデータベース サーバーを使用する場合は、データベースを開いて、新しいデータベースやオブジェクトをサーバー上に作成するために必要なセキュリティ権限があることを、そのデータベースの管理者に確認する必要があります。前の方で説明した手順で MSDE をインストールしている場合は、十分な権限を得るために既定の sa アカウントと空のパスワードを使用してログオンし、サーバー上にデータベースおよびオブジェクトを作成することができます。

Access 2000 で [ファイル] メニューの [新規作成] をクリックすると、図 1.2 に示すように [標準] タブにオプションが表示されます。

Aa139930.apg0102(ja-jp,office.10).gif
図 1.2 [新規作成] ダイアログ ボックスと [標準] タブ

[プロジェクト (既存のデータベース)] アイコンと [プロジェクト (新しいデータベース)] アイコンは、次の手順で説明するように、Access プロジェクトの作成に使用します。

新しい Access プロジェクトを作成し、既存のサーバー データベースに接続する

Access プロジェクトを作成して、既存のサーバー データベースに接続するには、次の手順で説明するように、[ファイル] メニューの [新規作成] を使用します。

Access プロジェクトを作成し、既存のデータベースに接続するには

  1. [ファイル] メニューの [新規作成] をクリックします。

  2. [新規作成] ダイアログ ボックスで [標準] タブをクリックし、[プロジェクト (既存のデータベース)] をダブルクリックします。

  3. [データベースの新規作成] ダイアログ ボックスで、プロジェクト ファイルの名前と場所を指定し、[作成] をクリックします。

  4. [データ リンク プロパティ] ダイアログ ボックスの [接続] タブで、サーバー名と、サーバーにログオンするために必要な情報を入力し、接続するデータベースを選択します。指定した情報が正しいことを確認するために、[接続のテスト] をクリックします。[OK] をクリックして接続情報を保存し、新しい Access プロジェクト ファイルを開きます。

     

    注意 :

    Windows 95 または 98 を使用している場合、サーバーを選択するには、[サーバー名を選択または入力します] ボックスに正確なサーバー名を入力する必要があります。Windows NT 4.0 以降の場合は、ボックスの右端にある矢印をクリックして従属ドメイン内で利用可能なすべてのサーバーを一覧表示するか、サーバー名を入力してください。 パーソナル コンピュータにインストールした MSDE を使用している場合は、既定のサーバー名はそのコンピュータのネットワーク名です。これを調べるには、コントロール パネルを開き、[ネットワーク] をダブルクリックして、[識別] タブをクリックします。また、同じコンピュータ上で Access 2000 と MSDE または SQL Server の両方を実行している場合は、[サーバー名を選択または入力します] ボックスに「(ローカル)」と入力してローカル サーバーにデータベースを作成したり接続することができます。ただし、Access プロジェクト ファイル (.adp) を別のコンピュータに移動する際は、正しいサーバー名を参照するように接続情報を更新する必要があります。MSDE の既定のセキュリティ設定を変更していない場合は、 sa ログオン ID と空のパスワードを使用してログオンすることができます。

    この手順を完了すると、手順 4 で指定したデータベースに新しい Access プロジェクトを接続することができます。Access の [データベース] ウィンドウには、このデータベースに以前作成したテーブル、ビュー、ストアド プロシージャ、およびデータベース ダイアグラムを表示できます。Access に特有のアプリケーション オブジェクト (フォーム、レポート、データ アクセス ページ、マクロ、またはモジュール) は表示されません。これらのオブジェクトはこれから作成する必要があります。

注意 :    Access プロジェクト内で公開されるテーブル オブジェクトと、.mdf ファイルで作成されるリンク テーブルを混同しないようにしてください。Access プロジェクトのテーブル オブジェクトは、Microsoft SQL Server 6.5、7.0、および MSDE データベースのテーブルとの直接のインターフェイスとして機能します。Access プロジェクトのテーブル オブジェクトは、リンク テーブルとはまったく違うものです。たとえば、Access プロジェクト インターフェイスでテーブルを削除すると、実際にサーバー上からテーブルが削除されます。また、Access プロジェクト インターフェイスでテーブルやほかのサーバー側オブジェクトの設計を変更すると、サーバー上のオブジェクトが直接変更されます。

新しいサーバー データベースを作成し、新しい Access プロジェクトを接続する

新しい (空の) サーバー データベースを作成し、新しい Access プロジェクトをそのデータベースに接続するには、次の手順で説明するように [ファイル] メニューの [新規作成] を使用します。

新しい SQL Server または MSDE データベースを作成し、Access プロジェクトを接続するには

  1. [ファイル] メニューの [新規作成] をクリックします。

  2. [新規作成] ダイアログ ボックスで [標準] タブをクリックし、[プロジェクト (新しいデータベース)] をダブルクリックします。

  3. [データベースの新規作成] ダイアログ ボックスで、プロジェクト ファイルの名前と場所を指定して、[作成] をクリックします。これで新しい Access プロジェクトが作成され、Microsoft SQL Server データベース ウィザードが起動します。なお、このウィザードは既定ではインストールされませんので、インストール CD-ROM を用意しておく必要があります。

  4. Microsoft SQL Server データベース ウィザードで、使用するサーバー名、サーバーでの CREATE DATABASE 権限のあるアカウントのログオン ID とパスワード (サーバーで Windows NT の統合セキュリティを使用しており、現在 CREATE DATABASE 権限のあるアカウントとしてログオンしている場合は、ログオン情報は省略できます)、および新しい SQL Server データベースの名前を入力して、[次へ] をクリックします。

    注意 :     前の手順 4 の注意を参照してください。Microsoft SQL Server データベース ウィザードについても、同じ制限事項および情報が適用されます。

  5. Microsoft SQL Server 6.5 データベースを作成する場合は、データベース デバイスとサイズ、トランザクション ログ デバイスとサイズ、データベースのサイズ、およびログのサイズを入力します。

    注意 :    この情報の指定方法については、Microsoft Access ヘルプを参照してください。[目次] ペインで「Access プロジェクトの操作」を開き、「Access データベースのアップサイジング」を開いて、「データベースおよびトランザクション ログのデバイスとサイズを入力する」を参照してください。

  6. [完了] をクリックすると、新しいデータベースが作成されます。

    この手順を完了すると、手順 4 で指定したサーバー上の空のデータベースに新しい Access プロジェクトを接続することができます。Access [データベース] ウィンドウには、データベース オブジェクト (テーブル、ビュー、ストアド プロシージャ、およびデータベース ダイアグラム) や Access に特有のアプリケーション オブジェクト (フォーム、レポート、データ アクセス ページ、マクロ、またはモジュール) は表示されません。すべてのオブジェクトはこの手順を使用してこれから作成するからです。次の章「 第 2 章 : Microsoft Access 2000 クライアント/サーバー データベースの実装 」では、この同じ手順を State University サンプル アプリケーションと関連付けて説明します。

Access プロジェクトの接続情報を変更する

[データ リンク プロパティ] ダイアログ ボックスを使用して、Access プロジェクト ファイルの接続情報を再定義することもできます。たとえば、データベースをテストから本番に切り替えるときや、プライマリ サーバーからセカンダリ サーバーに切り替えるときに使用します。このためには、次の手順で説明するように、[ファイル] メニューの [接続] を使用します。

Access プロジェクトの接続情報を変更するには

  1. 使用する Access プロジェクトを開きます。

  2. [ファイル] メニューの [接続] をクリックします。

  3. [データ リンク プロパティ] ダイアログ ボックスの [接続] タブで、サーバー名と、サーバーにログオンするために必要な情報を入力し、接続するデータベースを選択します。指定した情報が正しいことを確認するために、[接続のテスト] をクリックします。[OK] をクリックして接続情報を保存します。

サーバー側データベース オブジェクトを使用する

Access プロジェクトを作成して、サーバーのデータベースに正常に接続したら、既存のオブジェクトの変更するだけでなく、新しいデータベース オブジェクトを作成することができます。図 1.3 に示すように、Access プロジェクトの [データベース] ウィンドウには、サーバー側 SQL Server および MSDE データベース オブジェクトを公開します。これまでに SQL Server を使用したことがない場合は、見慣れないオブジェクトがいくつかあるかもしれません。

Aa139930.apg0103(ja-jp,office.10).gif
図 1.3 NorthwindCS.adp のオブジェクトを表示している [データベース] ウィンドウ

次のセクションでは、SQL Server と MSDE のテーブル、ビュー、ストアド プロシージャ、およびデータベース ダイアグラムの特徴をいくつか簡単に説明し、Access データベース オブジェクトとの重要な違いについて説明します。使用するサーバーでの十分な権限があれば、Access ユーザー インターフェイスの対応するデザイン ビューから、これらのすべてのオブジェクトを作成および変更することができます。詳細および具体的な例 (State University アプリケーション) は、このシリーズの次の 2 つの記事で扱います。

テーブル

Access プロジェクトを Access 2000 で開くと、テーブルのデザイン ビュー (図 1.4 参照) を使用してサーバーのテーブルを使用します。

Aa139930.apg0104(ja-jp,office.10).gif
図 1.4 デザイン ビューに [プロパティ] ダイアログ ボックスが表示された NorthwindCS.adp の Products テーブル

SQL Server および MSDE データベースのテーブルは、基本的には .mdb データベースのテーブルと同じ機能を果たしますが、異なるデータ型をサポートしており、CHECK 制約やトリガなどの追加機能を提供します。

たとえば、CHECK 制約は、列 (フィールド) や行 (レコード) に入力できる値を制限する論理式を定義することで、Access のフィールドやテーブルの入力規則のように機能します。CHECK 制約を定義する式は、同じテーブル内の個々の列や複数の列を参照できますが、ほかのテーブルの列は参照できません。ただし、Access のフィールドやテーブルの入力規則とは異なり、SQL Server の CHECK 制約はテーブル レベルで作成され (また、作成した順に適用され)、ValidationText メッセージを定義することはできません。CHECK 制約を定義するには、デザイン ビューにテーブルを表示し、ツール バーの [プロパティ] をクリックします。制約の詳細および使用方法については、「 第 2 章 : Microsoft Access 2000 クライアント/サーバー データベースの実装」の「テーブルに制約を作成する」を参照してください。

トリガは、ビジネス ルールおよびデータの整合性をテーブル レベルで設定するための、より汎用的な機構を提供します。トリガは、テーブルに行が追加されたり、更新されたり、削除されるたびに実行されるアクションです。Access データベース内のテーブルには、連鎖削除や連鎖更新などの組み込み機能があります。これらはトリガと同じような機能をはたしますが、柔軟で強力な比較機能はありません。Transact-SQL コードを使用することで、トリガは連鎖削除や連鎖更新などの機能を実行することができます。また、カスタマイズしたメッセージやエラー処理をサポートするビジネス ルールと、複数のテーブルの列を参照するデータの整合性ルールを含めることができます。テーブルにトリガを追加するには、[データベース] ウィンドウのテーブルを右クリックし、[トリガ] をクリックします。トリガの詳細および使用方法については、「第 2 章 : Microsoft Access 2000 クライアント/サーバー データベースの実装」の「トリガを作成する」を参照してください。

ビューとストアド プロシージャ

Access データベースの単一のクエリ オブジェクトで利用可能な機能とほとんど同じ機能が、SQL Server および MSDE データベースでは 2 種類のオブジェクトに分けられています。これがビューとストアド プロシージャです。

"ビュー" は、SQL SELECT ステートメントによって生成される仮想テーブルです。ビューの定義はサーバー データベース内に保存されます。Access データベースの選択クエリと同じ点は、ビューはほとんどのデータベース操作についてテーブルと同じように扱うことができます。また、ビューに対して行った操作は、ビューの基のテーブルのデータに影響を与えるということです。Access の選択クエリと異なる点は、ビューの行をソートできないことです。これは、ビューで ORDER BY 句がサポートされていないからです。Access データベース クエリのその他のフォームと異なる点は、行グループの削除、追加、更新などの一括操作がビューでサポートされていないことです。SQL Server および MSDE データベースでは、ストアド プロシージャがこれらの操作およびその他の機能を提供しています。クエリ デザイナ (図 1.5 参照) では、.mdb ファイルで選択クエリを作成および変更するために使用していたツールと似ている視覚的なツールを使用することで、Access プロジェクトのビューを作成したり変更したりします。

Aa139930.apg0105(ja-jp,office.10).gif
図 1.5 クエリ デザイナ

クエリ デザイナの下部分にある SQL ペインには、ビューに対して生成された Transact-SQL コマンドを表示したり、Transact-SQL コマンドを直接入力してビューを定義することができます。ビューおよびビューの使用方法の詳細については、「第 3 章 : Microsoft Access 2000 クライアント/サーバー アプリケーションの構築」の「そのほかのレコード ソース」を参照してください。

"ストアド プロシージャ" はコンパイル済みの Transact-SQL ステートメントと、流れを制御するステートメントの集まりで、名前を付けて保存され、1 つの単位として処理されます。図 1.6 は、Northwind SQL Access プロジェクト ファイルの Sales by Year ストアド プロシージャを定義する Transact-SQL コマンドを示しています。

Aa139930.apg0106(ja-jp,office.10).gif
図 1.6. デザイン ビューの Sales by Year ストアド プロシージャ

ストアド プロシージャは、アプリケーションから 1 回呼び出すだけで実行することができ、ユーザー宣言変数、条件付き実行、およびその他の強力なプログラミング機能を使用することができます。ストアド プロシージャには、プログラム制御ステートメント、ビジネス ルール、およびデータベースに対するクエリを含めることができます。引数を受け付け、パラメータ、単一または複数の結果セット、および値を返すことができます。ストアド プロシージャは SQL ステートメントを使用するさまざまな目的に使用することができ、次のような利点が得られます。

  • 一連の SQL ステートメントを 1 つのストアド プロシージャ内で実行することができます。

  • ストアド プロシージャからはほかのストアド プロシージャを参照することができるため、一連の複雑なステートメントを簡素化することができます。

  • ストアド プロシージャは作成時にサーバー上でコンパイルされるため、個々の SQL ステートメントよりも高速に実行されます。

  • 実行可能な Visual Basic プログラムなどの外部プログラムを実行できます。

Access で作成可能なアクション クエリと同様、ストアド プロシージャも一括アクションをサポートしていますが、アクション クエリとは異なり、ストアド プロシージャでは一連の SQL ステートメントをサポートし、より複雑なロジックおよびエラー処理を含めることができます。また、サーバー状態情報のレポート、メール メッセージの送信、セキュリティ管理など、さまざまな管理機能を実行するためにストアド プロシージャを使用することもできます。さらに、複数の結果セットを返すことができるパラメータ クエリを作成することもできます。ただし、Access 2000 には、ストアド プロシージャの作成または変更するための視覚的なツールやウィザードがありません。ストアド プロシージャ デザイン ビューに Transact-SQL プログラミング コードおよびコマンドを直接入力することで、ストアド プロシージャを使用する必要があります。

データベース ダイアグラム

SQL Server または MSDE データベースでは、データベース ダイアグラム デザイナが Access .mdb ファイルのリレーションシップ ウィンドウと同じ機能を果たします。つまり、データベース ダイアグラム デザイナによってデータベースのテーブル間のリレーションシップを視覚的に定義および表示するための手段が提供されるということです。"データベース ダイアグラム" はデータベース構造の全体でも一部でもかまいません。これにはテーブルのオブジェクト、テーブルに含まれる列 (フィールド)、およびテーブル間のリレーションシップが含まれます。Access Jet データベースのリレーションシップ ウィンドウとは異なり、SQL Server や MSDE データベースのデータベース ダイアグラム デザイナには、複数のデータベース ダイアグラムを含めることができます。またデータベース ダイアグラム デザイナから直接新しいテーブルを作成したり、既存のテーブルを変更することもできます。

図 1.7 は、Northwind SQL Access プロジェクト ファイルのデータベース ダイアグラム デザイナを示しています。

Aa139930.apg0107(ja-jp,office.10).gif
図 1.7 Northwind SQL Access プロジェクト ファイルのデータベース ダイアグラム デザイナ

ヒント :    SQL Server 7.0 がインストールされている場合は、Enterprise Manager や Query Analyzer などのツールを使用して、ほかのコンピュータで実行されている MSDE 1.0 データベース使用することもできます。

クライアント側アプリケーション オブジェクトを使用する

Access プロジェクトには、同じ 5 つのアプリケーション オブジェクト (フォーム、レポート、データ アクセス ページへのリンク、マクロ、およびモジュール) を .mdb ファイルとして含めることができます。次のセクションでは、Access プロジェクトの各オブジェクトの機能を簡単に説明します。このシリーズの残りの 2 つの記事では、詳細な情報と具体的な例を State University サンプル アプリケーションを使用して説明します。

設計ツールは、Access データベースで Access プロジェクト ファイル内のフォーム、レポート、データ アクセス ページ、マクロ、および VBA モジュールで作業するときに使用するツールとほとんど同じものを使用できます。これらのオブジェクトを作成するには、データベース ウィンドウを開き、作成するオブジェクトの種類を選択して、[新規作成] をクリックします。

フォームとレポート

Access プロジェクトでは、デザイン ビューを使用してフォームおよびレポートを新規に作成することができます。デザイン ビューの使い方は、.mdb ファイルの場合とほとんど同じです。Access プロジェクトでフォームやレポートを作成するときに、フォームやレポートの RecordSource プロパティをテーブル、ビュー、単一行セットを返すストアド プロシージャまたは SQL ステートメントに設定することができます。フォームまたはレポートのデータ ソースとして使用されるストアド プロシージャで入力パラメータが必要な場合は、フォームまたはレポートを開いたときに、これらの値を入力するための画面が自動的に表示されます。入力パラメータの値を指定する場合は、フォームまたはレポートの InputParameters プロパティを使用して、ストアド プロシージャの入力パラメータのソースを指定できます。入力パラメータの詳細と使用方法については、「 第 3 章 : Microsoft Access 2000 クライアント/サーバー アプリケーションの構築」の「クライアント/サーバー フォーム プロパティ」を参照してください。

Access プロジェクトには、フォームやレポートを作成するための、次のようなウィザードもあります。

  • フォーム ウィザード

  • オートフォーム ウィザード

  • レポート ウィザード

  • オートレポート ウィザード

  • 宛名ラベル ウィザード (レポート)

これらのウィザードの使い方は、基本的には .mdb ファイルの対応するウィザードと同じです。

データ アクセス ページ

Access 2000 の新機能である "データ アクセス ページ" は、Access データベースまたは SQL Server および MSDE データベース に接続された対話的な Web ページです。ユーザーが Microsoft Internet Explorer 5 以降でデータ アクセス ページを表示すると、データのソート、フィルタ化、追加、または変更を行ったり、詳細表示を展開および縮小したり、ピボットテーブル リストを使用したり、変更結果をグラフにすることができます。

注意 :    Access データベース ウィンドウのページ オブジェクトを使用して、データ アクセス ページの作成、変更したり、開くことができますが、ページ自体が Access プロジェクトまたはページが接続しているサーバーのデータベースに保存されているわけではありません。各データ アクセス ページは、ファイル システムまたは Web サーバー上で別の .htm ファイルとして保存されています。データベース ウィンドウのページ オブジェクトは、データ アクセス ページの .htm ファイルへのショートカット (リンク) です。

データ アクセス ページは、Access データベースと SQL Server および MSDE バック エンド データベースの両方に対して同じ設計ツールをサポートしています。これらの設計ツールは、データ アクセス ページのデザイン ビュー、ページ ウィザード、および Microsoft Script Editor です。

サンプルの Northwind SQL Access プロジェクト ファイルは、実際はデータ アクセス ページをインストールしません。その代わり、Show Me ヘルプ ファイルに、標準 Northwind Traders サンプル アプリケーション (Northwind.mdb) からデータ アクセス ページをインポートする方法、および NorthwindCS.adp サーバー データベースを示すように各ページの接続情報を変更する方法が説明されています。

マクロとモジュール

Access プロジェクトのマクロは、追加アクションとアクション引数を提供し、SQL Server および MSDE オブジェクトを使用できるようにします。同様に、 OpenViewOpenStoredProcedure、および OpenDiagram など、 DoCmd オブジェクトにメソッドが追加され、VBA コードから Access プロジェクト ビュー、ストアド プロシージャ、およびデータベース ダイアグラムを開くことができるようになりました。さらに、 DoCmd オブジェクトのその他のメソッドには、Access プロジェクト オブジェクトとの相違点に対応するための新しい動作や引数を持つメソッドもあります。Access プロジェクト特有のマクロ アクションおよび DoCmd オブジェクトのメソッドの詳細については、「Microsoft Access Visual Basic リファレンス」で「OpenView メソッド」、「OpenStoredProcedure メソッド」、「OpenDiagram メソッド」、および「DoCmd オブジェクト」を参照してください。

VBA コードの作成には Access プロジェクトで使用するものと同じ Visual Basic Editor が使用されます。Access クライアント/サーバー ソリューションでのプログラミングは、Access データベース ソリューションでのプログラミングと非常によく似ています。Access プロジェクトまたは Access データベースのどちらを使用するかに関係なく、Access オブジェクト モデルはほとんどの点で同じです。Access プロジェクトから SQL Server データベースに保存されているオブジェクトを直接使用するには、ADO コードを使う必要があります。ADO およびその使用方法の詳細については、「第 3 章 : Microsoft Access 2000 クライアント/サーバー アプリケーションの構築」の「データ アクセス プログラミング」を参照してください。

Access プロジェクトのサーバー データを使用する

拡張性があり効果的な SQL Server データベースとの相互作用を作成するため、Access 2000 プロジェクト ファイルは、フォームおよびデータシートに表示されるデータ行をやり取りするための "更新可能なスナップショット" モデルを使用するように設計されています。行を取得するのに何往復もする必要がある Access データベースとは異なり、更新可能なスナップショットの場合は、サーバーへの 1 往復でクライアント側のキャッシュに収まる行データを要求するため、結果としてパフォーマンスが向上します。

更新可能なスナップショットを使用する場合は、クライアント側のキャッシュに含めることができる最大行数を指定します。パフォーマンスを向上させるためには、更新可能なスナップショットは非同期的にキャッシュを行い、ユーザー インターフェイスで十分なデータが揃いしだい、行を表示できるようにし、バックグラウンドでデータのキャッシュを引き続き行うことで、ユーザーがフォームやデータシートを開いたままにした場合にサーバーでロックが発生しないようにします。

ユーザーは [中止] ボタンおよび [最大レコード数を制限する] ボタン (図 1.8 参照) を使用することで、これらの機能を管理できます。これらのボタンは、データベースおよびフォームの移動ボタンの右端に追加されます。

Aa139930.apg0108(ja-jp,office.10).gif
図 1.8 移動ボタンの [中止] ボタンと [最大レコード数を制限する] ボタン

[Cancel Query] ボタンを使用すると、操作に時間がかかるときにサーバーからのデータのダウンロードを停止することができます。[最大レコード数を制限する] ボタンは、ダウンロードする行数を動的に制御し、更新可能なスナップショットにキャッシュすることができるスライダを表示します。特に指定しない限り、この値は 10,000 行ですが、MaxRecords プロパティを使用すればすべての新しいフォームの既定値を別の値に設定することができます。すべての新しいフォームおよびデータシートの既定値は、[オプション] ダイアログ ボックス ([ツール] メニュー) の [詳細] タブにある [既定の最大レコード数] ボックスに値を入力することで設定できます。これらのボタンをフォームで使用しない場合は、フォームの NavigationButtons プロパティを No に設定できます。

要約

Access 2000 プロジェクト ファイルを MSDE と併せて使用すると、迅速にクライアント/サーバー ソリューションを開発するために必要なすべてのツールが利用できます。MSDE および Northwind SQL Access プロジェクト ファイルをインストールすると、これらの強力な新機能について効率的に学ぶことができます。このシリーズの次の 2つの記事では、具体的な開発について、新しい State University サンプル アプリケーションを使用して段階的に説明します。Access プロジェクトを使用したクライアント/サーバー ソリューションの開発に関するそのほかのリソースについては、「 Appendix 2: Additional Resources for Working with Microsoft Access 2000 Projects (英語) 」を参照してください。

--------------------------------------------

特に記載していない場合、ここに記載されている会社、製品、人物、キャラクタ、およびデータなどは架空のものです。実在する個人名、会社名、イベント名などとは一切関係ありません。