MS Access

初めてのSQL Server 2008 R2 Express Editionでつまづいたことの記録

投稿日:2012年12月11日 更新日:

やりたかったことは、
1.Accessのとあるテーブルを、SQL Server 2008にインポートして、複製を作る。
2.上記で作ったテーブルを、AccessからODBCで読め、かつパススルークエリを作れることの確認。

アプリのインストール

SQLEXPRWT_x86_JPN.exeとSQLServer2008SP3-KB2546951-x86-JPN.exeとSQLManagementStudio_x86_JPN.exeをインストールしたら、スタートメニューに「Microsoft SQL Server 2005」と「Microsoft SQL Server 2008」と「Microsoft SQL Server 2008 R2」の3つの項目が出来た。
失敗したかな、と思い、アンインストしてから再インストールしたが、結果は同じ。
まあいいか。

SQL Server Management StudioでAccessのテーブルをインポート

これが便利だと聞いていたので、使ってみた。
左ペインの「システム データベース」の「master」を右クリックして、「タスク」の「データのインポート」を選択し、あとはウィザードの指示通りに進めるとインポートは完了する。
(このコマンドの場所がなかなか分からなかった! しかしその他は簡単)

ODBCの設定

最初、Windowsのコントロールパネルから「データ ソース (ODBC)」を探して起動し、「SQL Server Native Cliant10.0」のドライバで登録して、そのDNSをAccessの外部データ-「ODBC接続」で呼び出したのだが、ウイザード中の「テーブルのリンク」一覧に、目的とするテーブルが出てこない。どうやったかは後述するが、色々やっているうちに、コンパネではなくAccess側から全て操作できることが分かったので、結局、途中からコントロールパネルからの登録はやめた。
注意するところは、
ウイザードで「どちらのSQLServerに接続しますか?」と聞いてきたときに、コンボボックスから選ぶことになっているが、その中のどれを選んでも接続できなかったので、SQL Server Management Studioの最初の接続の時に入っていた文字列「SAITO-HP\SQLEXPRESS」(自分の環境の場合)を入れたことと、
同じくウイザードの最後の方で「規定のデータベースを以下に変更する」のコンボボックスから、インポートの時に使ったデータベース名を選択すること(これを指定しないとシステム関係のテーブルしか出てこない)。
ともかく、苦労しつつも、ココまででAccessの画面上に地球アイコンのリンクテーブルが出現した。
(ここまでで半日かかった・・・)

パススルークエリの作成

Access側で普通にリンクテーブルを使ってクエリを作ることは、直ぐ出来た。
しかし、パススルークエリの作り方が分からない。全部を読み出す単純な選択クエリでも「ODBC–呼び出しが失敗しました」エラーが表示される。
これも正解を見つけるのに時間がかかったが、Accessで作るクエリ「SELECT * FROM dbo_master;」ではダメで、SqlServerのクエリ「SELECT * FROM master」だとOK。SQL Server Management Studioの左ペインには「dbo_master」とあるのだが、dbo_だとダメであった。
これも分かるまでに、相当の時間がかかった。
どうやって分かったかというと、SQL Server Management Studioのツールバーに「新しいクエリ」ボタンがあり、それをクリックするとクエリデザイン画面が表示され、画面上を右クリックすると「エディターでクエリをデザイン」画面が表示される。「テーブルを追加」画面にインポートしたテーブルが見えるので、それを使ってクエリを作る。それを実行すると成功して結果が表示されたので、それをコピーして、アクセスのSQL画面にペーストして実行したらOKだった。
(これも分かるのに3時間ほど・・・)

-MS Access

執筆者:

関連記事

no image

ドメインのDNSの管理会社を移転したら、BASP21でSMTP送信がエラー

CPIも、BASP21も、どちらもマイナー(笑)なので、誰の役にも立たないかもしれないけど、自分の備忘録として、残します。 これまでCPIでWebもメールも動かしていたが、WebのみをShopifyに …

no image

AccessでIN演算子をクエリの抽出条件に使うのに苦労

やりたいこと: 非連結のチェックボックスでレコードを選択する – hatena chips ・・・のようなこと。 ・フォームのテキストボックスに、’354942-0007474 …

no image

Accessのフォーム/レポートのコントロール同士をくっつけて桝目状にしたい

レポートを、Excelのような桝目の罫線にしたい。 お客からこんなニーズが多い。 やったことがある人ならわかるけど、これが、なかなか苦労する。 レポートのデザインビューで、いざ個々にコントロールをきち …

no image

VBAで忘れてしまっていたことと、知らなかったこと

STOPステートメント: ブレークポイントを設定しないでもその行でコード処理を止めることができるので、Access終了->Access起動といったシチュエーションで使える。 Randomizeステート …

no image

Accessで「イベントプロパティに指定した式MouseMoveでエラーが発生しました。フォームまたはレポート上のActiveX コントロールを読み込むときにエラーが発生しました。」

フォームに配置したプログレスバーコントロールの上をマウスポインタが横切ろうとすると、必ず上のエラーメッセージが表示される。 原因がわからず、対処もできず、困っていた。 Google先生も頼りにならず、 …