管理者権限のないアカウントでWindowsを使うことになり、%OracleHome%\NETWORK\ADMIN\tnsnames.oraをいじれなくて困っていたのですが、次の方法でAccessから独自のtnsnames.oraを使ってODBC接続できることが分かりました。
ポイント
- Access DBファイルと同じところに独自tnsnames.oraを作成する。
- Access DBファイルと同じところにファイルデータソースを作成する。
- 作成後は、Access DBファイルのみ他の場所に移動しても大丈夫。
- ファイルデータソースやtnsnames.oraを移動させると接続できなくなる。
手順
1.独自のtnsnames.oraの作成
必要な内容を記述して任意のフォルダに配置します。ここではマイドキュメント(%USERPRIFILE%\Documents)に保存することにしましょう。
2.Access DBの作成
1.で作成したtnsnames.oraと同じフォルダにAccess DBを作成します。
3.ODBC接続
あとはAccessから接続するだけです。[外部データ]タブの[ODBC データベース]を選択します。
「外部データの取り込み – ODBC データベース」ダイアログが開き、「データのインポート元とインポート先、またはリンク元とリンク先の選択」画面が表示されるので、目的とする方を選びます。今回は[リンク テーブルを作成してソース データにリンクする]を選びます。
「データ ソースの選択」ダイアログが表示されるので[新規作成]ボタンをクリックします。
[データ ソースの新規作成」ダイアログが開くので、OracleのODBCドライバーを選択して、[次へ]ボタンをクリックします。
例ではOracle 11gのODBCドライバーを選択しているところです。
任意の[データ ソース名]を入力して[次へ]ボタンをクリックします。
パスを省略すると、「マイ ドキュメント」に作成されます。
[完了]ボタンをクリックします。
「Oracle ODBC ドライバ接続」ダイアログが新たに開くので、サービス名に先ほど作成した独自のtnsnames.oraに記述したサービス名、あとは必要なユーザー名、パスワードを入力して[OK]ボタンをクリックします。
「データ ソースの選択」ダイアログに戻ると、今作成したデータソースの名前が[DNS 名]に設定されているので、そのまま[OK]ボタンをクリックします。
あとは、再び「Oracle ODBC ドライバ接続」ダイアログが開くので、必要なパスワードを入力して[OK]ボタンを押せば完了です。
知っている人には常識なのでしょうが、これで1日くらいはまったのでメモ。
ためして無いけれど、簡易接続使って接続できるなら、TNS使わなくても接続できるんじゃないっすかね。
または、TNSを丸ごと記述するとか。
TNSを丸ごと記述は、「Oracle ODBC ドライバ接続」ダイアログの[サービス名]に入れてみようとしたら桁数制限で入りきりませんでした・・・
「TNS使わなくても」というのが、具体的にどういった方法のことを指しているのかわからないのですが、教えていただけますか?
私も同じ状況で困っています。上記を参考にさせていただき、リンクテーブルを作成したところ、その時はちゃんと接続できて、テーブルを開くことができるのですが、一度Accessを終了すると、もう繋がらなくなります。tnsnames.oraの検索順はカレントディレクトリが最初じゃないのでしょうか?(本来のoraclehomeに存在するものを参照してしまいます。)