Access 2013 と SQL Server


8 月 8 日  Posted by Andrew Stegmaier

この記事の執筆者は、Access チームのプログラムマネージャーである Russell Sinclair です。 

 

Access 2013 Web Apps は、SQL Server および SQL Azure と密接に統合されるようになりました。Access 2010 では、SharePoint で Web アプリケーションを作成すると、アプリケーションが置かれているサイトでデータベース内のテーブルが SharePoint リストとして保存されましたが、Access 2013 を使って SharePoint で Web アプリケーションを作成すると、Access Services によって、すべての Access オブジェクトが格納された SQL Server または SQL Azure データベースが作成されます。この新しいアーキテクチャは、パフォーマンスと拡張性を高めるだけでなく、Access アプリのデータを拡張して操作するための新たなチャンスを SQL 開発者に与えます。

 

どのように動作するか

Access 2013 で Web アプリケーションを作成するときは、それを有効にする SharePoint サイトを選択します。他の SharePoint アプリと同様に、このサイトからアプリにアクセスしたり、管理やアンインストールを行うことができます。SharePoint でアプリを作成する過程では、アプリで必要となるすべてのオブジェクトとデータを含む SQL Server データベースが作成されます。テーブル、クエリ、マクロ、フォームがすべて、このデータベースに格納されます。ユーザーがアプリにアクセスしたり、データを入力したり、デザインを変更するときは、その背後にあるデータベースとやりとりすることになります。Office 365 でアプリを作成する場合は、データベースは SQL Azure で作成されます。会社でホストされている SharePoint サーバーでアプリを作成する場合、SharePoint 管理者によって選択された SQL Server 2012 でデータベースが作成されます。どちらの場合でも、作成されるデータベースはそのアプリに固有であり、他のアプリとは共有されません。

アプリを構築するときには、テーブル、クエリ、ビュー、マクロを追加して、ユーザーが必要とする機能を提供できます。ここからは、それらのオブジェクトを作成したときにデータベースで何が起きるかを説明しましょう。

 

テーブル

Access アプリにテーブルを追加すると、データベースに SQL Server テーブルが作成されます。このテーブルには、Access で付けたものと同じ名前が与えられます。クライアントで作成したフィールドについても同様です。SQL Server データベースで使用されるデータ型は、皆さんの期待どおり、テキスト フィールドは nvarchar、数値フィールドは decimal、int、float のいずれか、画像フィールドは varbinary(MAX) となります。

Access で次のテーブルを追加すると…

SQL Server のテーブルは次のようになります。

 

クエリ

アプリにクエリを追加すると、Access で SQL Server ビュー (または、クエリがパラメーターを持つ場合はテーブル値関数 (TVF)) が作成されます。ビューまたは TVF の名前は、Access で使用している名前と同じになります。T-SQL を生成するときには書式化ルールが使われるため、SQL Server で定義を直接表示したときにも理解しやすいでしょう。

Access でデザインされたクエリを例に挙げます。

これは、SQL Server では、次のように書式化されたステートメントとして保存されます。

CREATE VIEW [Access].[MyQuery]
AS
SELECT 
        [MyTable].[ID],
        [MyTable].[String Field],
        [MyTable].[Date Field]
FROM 
        [Access].[MyTable]
WHERE
        [MyTable].[Date Field] > DATEFROMPARTS(2012, 7, 16)

 

データ マクロ

データ マクロには、イベント データ マクロとスタンドアロン マクロの 2 種類があります。

デザイン ビューでテーブルを開き、[テーブル] リボンの [イベント] ボタンをクリックすると、イベント データ マクロを作成できます。

 

イベント データ マクロは、それが属するテーブルの AFTER トリガーとして SQL Server に実装されます。

[ホーム] リボンからスタンドアロン マクロを作成するには、[作成] セクションの [詳細] ボタンをクリックし、一覧からデータ マクロを選択します。この種類のマクロは、パラメーターを持つことができ、SQL Server でストアドプロシージャとして保持されます。

 

ビュー

Access 2013 のビューは、アプリを構成する要素であり、データをブラウザーに表示します。データベースのエキスパートはこれを「フォーム」と呼ぶ場合もあります。ビューはデータベースにも格納されます。ビューは、SQL オブジェクトというよりは HTML および JavaScript であるため、Access システム テーブルではテキストとして保存されます。

 

SQL Server スキーマ

Access は、データベース内で Access、AccessSystem、AccessRuntime という 3 つの SQL Server スキーマを使います。

AccessSystem スキーマには、Access Services が理解できる書式で各オブジェクトの定義を格納するシステム テーブルがあり、ランタイムまたはデザイン タイムサーフェスでアイテムが有効に機能するために必要となる断片的な情報が含まれています。

Access スキーマには、アプリのデザイナーによって作成されたテーブル、クエリ、マクロが含まれます。このスキーマに含まれるものはすべて、SQL Server でデザインしたオブジェクトの実装です。

AccessRuntime スキーマには、アプリのランタイム動作を最適化するために Access Services で使用する多数のアイテムが含まれます。

 

結論

このような細かい情報がなぜ重要なのか、戸惑っている方もいらっしゃるかもしれません。一部のユーザーにとっては、新しい SQL Server バックエンドによってもたらされる目に見える効果は、高速化と信頼性の向上だけです。技術的な詳細については考える必要がありません。しかし、熟練したユーザーにとっては、Access アプリの外部から SQL Server または SQL Azure データベースに直接アクセスできることで、高度な統合や拡張を実現できる可能性がはるかに広がることでしょう。

大きなメリット

外部接続を有効にするには、[ファイル] メニューをクリックして Backstage に移動します。[接続] セクションに、SQL Server ログイン資格情報が表示されます。この資格情報を使って、SQL Server Management Studio、ASP.NET、または SQL Server をサポートするその他のアプリケーションのデータベースに接続できます。

 

[接続の管理] ボタンには、SQL Server データベースへの接続を管理するためのコマンドが多数用意されています。ここでは、読み取り専用ログインと、読み取り/書き込みログインを生成できます。レポートツールなど、データを変更する必要がないプログラムまたはアプリから SQL Server データベースに接続するには、読み取り専用ログインを使います。データベースに接続してデータを変更したり新しいデータを入力したりするには、読み取り/書き込みログインを使います。たとえば、ASP.NET にパブリックな Web サイトを作成し、インターネット ユーザーがそこでアプリケーションを送信すると、送信されたアプリケーションがあなたの Access データベースに格納される、というシナリオも可能です。

 

ただし、この機能は、Office 365 Preview では現在使用できません。この機能を試したい場合は、Microsoft SharePoint Server 2013 Preview をダウンロードして、サーバーにセットアップしてください。

 

SQL Server によってもたらされるもの

私たちは、このような Access 2013 の機能の変更はとても画期的だと考えています。SQL Azure と SQL Server によって、Access 2013 は強力なデータ エンジンとしてデータを格納できるようになりました。また、高度な統合や拡張のための新しいシナリオが可能になります。皆さんが Access で素晴らしいアプリを構築されることを、私たちも楽しみにしています。

Comments (1)

  1. 久保 弘 より:

    2014/07/10 access2013を購入、sql server 2012との互換性を考えたものです。早速、本Pを参考に接続しましたが
    「SQL Server ログイン資格情報が表示」ができません。どのようにすればよいのか教えて頂きくたく宜しくお願いします。

Skip to main content