Access をフロントエンド アプリケーションとして使用し、SQL Server などのバックエンド サーバー内のテーブルにリンクできます。 既定では、ほとんどのクエリは Access ACE データベース エンジンでローカルに実行されます。 場合によっては、SQL 構文やその他の要因に応じて、SQL Server でクエリをリモートで実行できます。 詳細については、 再検出された JET および ODBC ホワイト ペーパーの「JET データベース エンジン バージョン 3.0: ODBC 接続」を参照してください。
ただし、多くの場合、データベース サーバーでクエリを明示的に実行する必要があります。 これは、パフォーマンスの向上に役立ちます。データベース サーバーはデスクトップ コンピューターよりも処理能力が高く、ネットワーク接続経由でデータのサブセットを小さく返すことができます。 データベース サーバーでクエリを実行するには、ODBC 接続文字列を使用して SQL Server に接続する Transact SQL (TSQL) ステートメントである パススルー クエリ を使用します。 たとえば、SELECT ステートメントを渡して、データシート、フォーム、レポート、またはリスト コントロールにデータを返し、同等のアクション クエリ (DML ) ステートメントを実行し、ストアド プロシージャを呼び出し、管理タスク (データ定義言語 (DDL) ステートメントを実行できます。
メモ パススルー クエリの結果は読み取り専用です。 データシートまたはフォーム内のデータを直接編集するには、インデックス付きビューにリンクされたテーブルを作成します。 詳細については、「 インデックス付きビューの作成」を参照してください。
-
サーバー データベースに接続します。
SQL Server へのリンクの詳細については、「SQL Server データベース内のデータのインポートまたはリンク 」および「 Azure SQL Server Database へのリンクまたはデータのインポート」を参照してください。
-
[作成]、[クエリ デザイン] の順に選択します。
-
必要に応じて、[ テーブルの追加 ] ダイアログ ボックスを閉じます (Access でテーブルを表示 します。
-
[ デザイン >パススルー] を選択 します。
Access では、クエリ デザイン グリッドが非表示になり、 SQL ビューが表示されます。
-
クエリ プロパティ シートが表示されない場合は、F4 キーを押して表示します。
-
プロパティ シートで、[ ODBC Connect Str ] プロパティ ボックスをクリックし、次のいずれかの操作を行います。
接続文字列を取得するには:
-
ナビゲーション ウィンドウで、目的のデータ ソースにリンクされているテーブルを右クリックし、[ リンクされたテーブル マネージャー] を選択します。
-
[ リンク テーブル マネージャー ] ダイアログ ボックスで、データ ソースのチェック ボックスをオンにし、[編集] を選択 します。
-
[ リンクの編集 ] ダイアログ ボックスで、[ 接続文字列 ] ボックスのテキストをコピーします。
-
[ ビルド ] を選択します。
-
プロンプトに従って、接続文字列情報を含む DSN ファイルを作成します。 詳細な手順については、「 SQL Server データベース内のデータをインポートまたはリンクする 」および「 Azure SQL Server Database にデータをリンクまたはインポートする」を参照してください。
DSN ファイル接続を作成すると、ODBC 接続文字列が Access データベースに内部的に格納されます。 その文字列のコピーを取得するトリックを次に示します。
-
目的の ODBC 接続を使用して、ナビゲーション ウィンドウでリンク テーブル名を見つけます。
-
Ctrl キーを押しながら G キーを押します。 をクリックして VBA イミディエイト ウィンドウを開きます。
-
次のコードを入力します。
?CurrentDb.TableDefs("<table name>").Connect
ただし、ステップ a のリンク テーブル名> テーブル名 <置き換えます。
-
返された文字列を ODBC Connect Str プロパティにコピーします。
-
-
SQL ビューにクエリを入力します。
注: Access SQL と SQL Server TSQL には重要な違いがあります。特に構文、関数名、関数引数を使用します。 詳細については、「Access SQL と SQL Server TSQL の比較」を参照してください。
ヒント 最初に SQL Server Management Studio で TSQL クエリを作成し、SQL をコピーして SQL ビューに貼り付けます。 これにより、クエリの構文が正しいことを確認します。 SQL Server データベースに簡単にアクセスできない場合は、最大 10 GB をサポートし、移行を実行して確認するための無料で簡単な方法である Microsoft SQL Server Express エディション をデスクトップにインストールすることを検討してください。
-
追加の関連プロパティを設定することを検討してください。
-
レコードを返します 一部の SQL ステートメントは、SELECT などのレコードを返し、一部は UPDATE などのレコードを返しません。 クエリからレコードが返される場合は、このプロパティを [はい] に設定します。クエリでレコードが返されない場合は、このプロパティを [いいえ] に設定します。
メモ パススルー クエリは複数の結果セットを返すことができますが、データシート、フォーム、レポート、またはレコードセット変数では、最初の結果セットのみが使用されます。 次の例に示すように、複数の結果セットを取得するには、 テーブル作成クエリ を使用します。
SELECT <pass-through query name>.* INTO <local table name> FROM < pass-through query name >
各結果セットの列が異なる場合があるため、アスタリスク (*) を使用する必要があります。 各結果セットは個別のテーブルに保存され、それに応じて番号がローカル テーブル名に追加されます。 たとえば、3 つの結果セットが返された場合、テーブル名は、ローカル テーブル名> <、ローカル テーブル名>1 <、ローカル テーブル名>2 <になります。
-
ログ メッセージ Access メッセージ テーブル内の SQL データベースからメッセージを返すかどうかを指定します。 テーブル名の形式は username – nn です。username は現在のユーザーのサインイン名で、nn は 00 から始まる数値です。
-
ODBC タイムアウト クエリの実行時にタイムアウト エラーが発生するまで待機する秒数を指定します。 既定値は 60 秒です。 ネットワーク トラフィックやデータベース サーバーの使用が多いため、遅延が発生する可能性があります。
-
最大レコード数 返すレコードの最大数を指定します。 システム リソースが限られている場合や、少量のデータで結果をテストしたい場合があります。
-
-
クエリの入力が完了したら、[ デザイン ] > [実行] を選択します。 クエリは、処理のためにデータベース サーバーに送信されます。