質問: sqlserver2005 odbcでの接続について sqlserver2005 odbcでの接続について access2003からodbcで接続して利用しております。 今までリンクテーブルでodbc接続する場合、各クライアントpcにodbcのデータソースを設定しておりましたが、各クライアントにodbcのデータソースを登録しなくても、odbcでリンクさせることができているものがありました。回りに聞ける人がいないので質問させていただきました。 1.sqlserver側でなにか特別な設定をしているのでしょうか?どうやって実現しているのか知りたいです。 2.sqlserver2000で同じことができますでしょうか? 教えていただければ幸いです。 情報が不足している場合はご指摘ください。 宜しくお願い致します。
回答: 質問中にもあるようにodbcはデータソースなるものを設定して接続を行うが、これには大きく分けて2種類ある。 ・・・・今「ユーザdsnとシステムdsnですね。分かります。」と思いましたか? それは、「dsn接続」と「dsnレス接続」だ。dsn接続はさらに「ユーザdsn」、「システムdsn」、「ファイルdsn」の三つに分けられる。で、質問者が聞きたいのは「dsnレス接続」の事だと思われる。文字通りdsnなしにodbc接続を行うものだ。まぁこのキーワードで検索すれば情報はあほほど見つかるけど触りだけ説明しておこう。 currentdb.createtabledef("tablenameinaccess", "password", "tablenameinsqlserver", "odbc;driver=sql server;server=(local);database=northwind;uid=sa;pwd=sapwd") access vbaで上の命令を実行するとodbc dsnの設定なしにodbc接続を行う事ができるのだ。 ちょっと話は変わるけど、別解として、dbengine.registerdatabaseというメソッドを使うと、access vba上から動的にdsnを作成する事ができる。が、これはdsnが作られるのでdsnレスではない。 ところで、access+sql serverでodbc接続をしている人を見る度に「なんでaccess projectにしないのかなぁ」と思う。microsoft accessは、バックエンドに自分自身などmdbを使う「access database」と、バックエンドにsql serverを使う「access project」の2種類を使う事ができる。 access projectは、odbcではなくoledbを用いてsql serverのテーブルを直接見に行くものだ。ファイルの拡張子はmdbではなくadpになる。sql serverのテーブルがそのままaccessのテーブルであるかのように操作できるため、フォームとレポートはaccess、テーブルとクエリ(ビュー)はsql serverと、accessでシステムを作るのと全く同じ感覚で簡単にc/sシステムに格上げする事ができるのだ。