none
SQLSERVERへの接続文字列について RRS feed

  • 質問

  • いつもお世話になっております。 接続文字列について理解を深めたいのでご教示宜しくお願い致しますm(_ _)m

    現在ACCESS2010からSQLSERVER2008にODBC経由で繋いでおります。

    接続文字列にいろんな書き方があり、いまいちどれが正解か分からず調べています。

    "Driver={SQL Server};Persist Security Info=False;Server=SERVER;User ID=TEST;Password=TEST;Database=TEST;"

    "Data Provide=MSDASQL.1;User ID=TEST;Password=TEST;Data Source=TEST;Data Source=TEST"

    などいろんな書き方が混在していて、どれが正解か分からない状態です。

    ODBCで繋げる場合はどの接続文字列が正しいのでしょうか。

    また「Provider=MSDataShape」という言葉があるのですが調べるとMicrosoftDataShape for OLEDBというものが出てきたのですが

    こちらはOLEDBで繋げる時に必要なものと言う事なのでしょうか。

    初心者でお手数をおかけ致しますが宜しくお願い致します。

    2015年7月7日 1:07

回答

すべての返信

  • まずAccessとSQL Serverとの接続を正しく理解する必要があります。実のところ

    Access <=> OLE DB <=> ODBC <=> SQL Server

    となっています。

    ここでOLE DBプロバイダーはいくつもあります。

    後は各々のOLE DBプロバイダーの接続文字列の書式に従います。

    2015年7月7日 1:36
  • 佐祐理様 ご回答ありがとうございます。

    今までADPファイルでOLEDBやODBCなど意識せず開発してきたため、いまいち仕組みが掴めておらず質問させて頂きました。

    Access <=> OLE DB <=> ODBC <=> SQL Server

    となっているのに、OLEDBが廃止されて問題ないのでしょうか。

    OLEDBが廃止となるため、現在ODBC経由にシステムを書き換えておりますが、

    MSDASQLやMSDataShapeを使用していない

    "Driver={SQL Server};Persist Security Info=False;Server=SERVER;User ID=TEST;Password=TEST;Database=TEST;"

    の書き方ならOLEDBは使用していないと言う事になるのでしょうか。

    2015年7月7日 2:24
  • 「Microsoft Data Shaping Service for OLE DBが削除予定」と書いたのですが、どこをどう読むとOLE DBが廃止という話になるのでしょうか?

    もしかしてSQL Serverに付属するSQL Server Native Client (OLE DB)廃止予定の話でしょうか? 2012で一度アナウンスがあったようですが2014のドキュメントからは廃止の話自体が削除されていて何とも言えないです。先に挙げたOLE DBプロバイダーはWindowsに付属するもので、話は別になります。OLE DB自体も廃止したいみたいですが…。

    ちなみにSQL Server Native Client (OLE DB)を使用する場合は「Provider=SQLNCLI11」と記述します。

    • 回答としてマーク hana11111 2015年7月7日 4:06
    • 回答としてマークされていない hana11111 2015年7月7日 4:06
    • 編集済み 佐祐理 2015年7月7日 4:21
    2015年7月7日 2:47
  • ACCESSとSQLSERVERのOLEDBがごちゃごちゃに理解していたので良く分からない事になってました。申し訳ありません。

    SQLSERVER2014以降のOLEDBプロバイダのサポートを廃止するという話自体が、今の所良く分からないと言う事なんですね。

    とてもご丁寧にありがとうございます。少しだけ理解できました。

    どちらにしてもそこの兼ね合いで、ACCESS2013からはadp(プロジェクト)がなくなりましたので

    会社の意向でODBC接続でプログラミングしていかなければならないですが

    Driver={SQL Server};Persist Security Info=False;Server=SERVER;User ID=TEST;Password=TEST;Database=TEST;

    上記の書き方でODBC接続になっているのか、それとも裏ではOLEDB接続として扱われているのでしょうか。

    お忙しい中、お手数をおかけ致しますが宜しくお願い致します。


    • 編集済み hana11111 2015年7月7日 4:57
    2015年7月7日 4:53
  • 最初から質問の背景を含めて頂けていたらもう少し説明し易かったかなと思います。

    OLE DB廃止やSQL Server Native Client (OLE DB)廃止を見越してODBC接続したいということですので、先の説明の通り、Provider=を省略した場合はMicrosoft OLE DB Provider for ODBCが使われODBC接続となります。その上で

    • Driver={SQL Server} とした場合はWindowsに付属するMicrosoft SQL Server ODBC Driverが使われます。
    • Driver={SQL Server Native Client 10.0} とした場合はSQL Server 2008以前に付属するSQL Server Native Client 10.0 ODBCが使われます。

    Accessから使用されるとのことですので、後者はインストールされていない可能性もあるため、前者の Driver={SQL Server} が適切かと思います。

    • 回答としてマーク hana11111 2015年7月7日 5:32
    2015年7月7日 5:20
  • 伝わりにくい質問をしてしまい申し訳ありませんでした。

    悩んでいたところが少し解決できたので、自分なりにもう少し勉強して理解を深めていきたいと思います。

    Providerではなく、Driverのところで設定しておくとODBC接続できるということなんですね。

    初心者相手に、最後までご丁寧に対応して頂き、本当にありがとうございましたm(_ _)m

    2015年7月7日 5:33
  • 掲載されているODBC接続文字列が微妙におかしいように思いますので、他にも参考となりそうなページを付加しておきます。

    SQL Server Connection Strings
    http://www.sqlstrings.com/SQL-Server-connection-strings.htm

    データベース接続あれこれ
    http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html#mssqloledb

    ODBCドライバでデータソースに接続する
    http://www.happy2-island.com/access/gogo03/capter00416.shtml

    OLE DBプロバイダでデータソースに接続する
    http://www.happy2-island.com/access/gogo03/capter00415.shtml


    ★良い回答には回答済みマークを付けよう! MVP - .NET  http://d.hatena.ne.jp/trapemiya/

    • 回答としてマーク hana11111 2015年7月7日 6:03
    2015年7月7日 5:54
  • trapemiya様

    ご丁寧にたくさんURLを貼って頂き、ありがとうございます。

    確かに少し、書き方が違うようなので修正致します。

    いつもご丁寧に対応して頂き感謝致しますm(_ _)m

    お二方ともお忙しい中、お時間を割いて頂きありがとうございました。

    2015年7月7日 6:12