4 アクションクエリのストアドプロシージャ化

アップサイジング前のAccessのデータベースと、アップサイジング後のADPのナビゲーションウィンドウを比較してみると、いわゆる「アクションクエリ」がなくなっていることが分かります。


そこで次に、アップサイジングウィザードによって生成されなかったアクションクエリを、SQL Serverのオブジェクトである「ストアドプロシージャ」として生成します。

これも、テーブル値関数からビューへの変更と同様に、次のようなコピー&ペーストの作業を中心に行います。

  1. まず、アップサイジング前の、元のファイル形式のデータベースを開きます。

  2. 対象となるアクションクエリのデザインビューを開きます。


  3. SQLビューに切り替えます。


  4. そこから、SQL文をすべて範囲選択し、クリップボードにコピーします。


  5. 今後は、ADP側のファイルに移り、リボンより[作成]タブの[その他]-[ストアドプロシージャ]ボタンをクリックします。


  6. それによってストアドプロシージャのデザインビューが開きますが、一般のファイル形式のAccessのクエリ新規作成時と同様に、まず「テーブルの追加」ダイアログが開きます。しかしここではテーブルからストアドプロシージャを組み立てていくのではないので、そのまま[閉じる]ボタンをクリックします。


  7. リボンから[デザイン]タブにある[ツール]-[SQL]のボタンをクリックし、「SQLペイン」を表示します。


  8. SQLペイン上でマウスを右クリックして、ショートカットメニューより[貼り付け]を選択、先ほどクリップボードにコピーしておいたSQL文を貼り付けます。
    • このとき、他のペインをクリックしたりすると、次のようなメッセージが表示されます。これは、AccessにおけるアクションクエリのSQLの構文と、SQL Serverにおけるそれが異なるため、単純にペーストしただけのSQL文ではADP上すなわちSQL Server上で構文エラーとなってしまうためです。ここでは、次のステップでSQL文を直していきますので、[はい]をクリックしてとりあえず貼り付けたSQL文を残すようにします。


  9. 次に、貼り付けられたAccessのアクションクエリのSQL文が、SQL ServerにおけるSQL(T-SQL)の文法に合うよう、SQLペインにて直接その内容を書き換えます。
    今回の例では、次のように書き換えることになります。Access上ではパラメータ付きクエリとなっていましたが、SQL Serverではそれはストアドプロシージャに対するパラメータとなりますので、そのパラメータ名の前に「@」を付けてそれを表記します。また、Accessのデザインビュー上で作成したクエリのSQL文は冗長になっている部分もありますので、ここでは適宜書き換えてシンプルなものにしておきます。
    AccessのSQL文 PARAMETERS 削除ID Long;
    DELETE tblスケジュール.*, tblスケジュール.ID
    FROM tblスケジュール
    WHERE (((tblスケジュール.ID)=[削除ID]));

    SQL ServerでのSQL文 DELETE FROM dbo.tblスケジュール
    WHERE (ID = @削除ID)

    • テーブル名の前の「dbo.」は自動的に付けられます。


    なお、SQL文を書き換えたあと、他のペインを選択することでSQL文に何らかの記述ミスがあればエラーメッセージが表示されますが、その前にリボンの[SQL構文の確認]ボタンをクリックすることでも、SQLの構文に間違いがないかチェックすることもできます。


  10. 構文に間違いがなければ、このストアドプロシージャに名前を付けて保存します。もちろん必要に応じて実際に実行し動作確認してみます。


  11. 以上のSQL文のコピー&ペースト、およびSQL Serverに合わせたSQL文の編集作業を、すべてのアクションクエリについて行います。

    なお、今回の場合、次のように根本的に書き方を変更しなければならないケースもあります。あくまでもSQL Server上のSQL文法に基づいて記述することになりますので、詳しくはそちらの文献等を参考にしてみてください。
    AccessのSQL文 DELETE *
    FROM tbl検索結果
    INNER JOIN qsel検索非該当者
    ON tbl検索結果.人材ID = qsel検索非該当者.人材ID

    SQL ServerでのSQL文 DELETE tbl検索結果
    FROM tbl検索結果
    INNER JOIN qsel検索非該当者
    ON tbl検索結果.人材ID = qsel検索非該当者.人材ID



  12. .今回の場合には、結果的に次図のように3つのストアドプロシージャが作成されました。
なお「ストアドプロシージャ」は、SQL Server Management Studioで見た場合には、「ビュー」とはまったく別のオブジェクトツリー上のノードに表示されますが、AccessのADPの場合には、ナビゲーションウィンドウ上では同じ「クエリ」として、ビューと同じような位置付けで表示されます(アイコンは異なります)。

またデザインを見る場合にも、SQL Server Management Studioではグラフィカルな表示はなくテキストベースの画面で編集しますが、AccessのADPの場合には、(SELECT文を含むアクションクエリの場合)ビューの選択クエリと似たような画面で編集することになります。
| Index | Prev | Next |

 

Copyright © T'sWare All rights reserved