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

フォーム テンプレート

Accessのフォームを作るときに、「フォーム テンプレート」を使う方法があること、知っている人は多いのかな? 既存のフォームにあるテキストボックスの色やサイズなどの設定(プロパティ)を引き継いで、新 …

no image

パラメータクエリにパラメータをセットして実行した結果をデータシートで表示する」というコードの実行で3065エラー

Accessの仕様として、パラメータクエリだけが駄目なのかと思ったら、なんと選択クエリが駄目なのだそう。 理由は、Executeメソッドはアクションクエリのもので、選択クエリのものではないからだそう。 …

no image

AccessからExcelフォーマットでファイルに出力するサンプルコード

Excelから外部データの接続の際に,ユーザー定義関数を含んだクエリを指定するとエラーになったので、こんなやり方で対処。 Private Sub btnB2_Click() DoCmd.OutputT …

no image

Accessで、見積書のような「サブフォームつきフォームを丸々コピー」する方法・・・見つけるのに、四苦八苦。

最初、複雑でかつ読み取り専用のクエリを元にしたフォームをコピーしようとしていたために、 acCmdPasteAppendのラインで「コマンドまたはアクション”追加貼り付け”は無効です」のエラーが出て、 …

no image

Accessでのキーワード検索(フィルタ)とブックマークの関係備忘録

Accessでのキーワード検索(フィルタ)とブックマークの関係を作るのに苦労したのでここに備忘録。 ポイントは、検索ではなくフィルタを使うことと、BookmarkではなくIDをグローバル変数に保存して …