トップ回答者
SQLSERVERへの接続文字列について

質問
-
いつもお世話になっております。 接続文字列について理解を深めたいのでご教示宜しくお願い致します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で繋げる時に必要なものと言う事なのでしょうか。
初心者でお手数をおかけ致しますが宜しくお願い致します。
回答
-
最初から質問の背景を含めて頂けていたらもう少し説明し易かったかなと思います。
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
-
掲載されているODBC接続文字列が微妙におかしいように思いますので、他にも参考となりそうなページを付加しておきます。
SQL Server Connection Strings
http://www.sqlstrings.com/SQL-Server-connection-strings.htmデータベース接続あれこれ
http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html#mssqloledbODBCドライバでデータソースに接続する
http://www.happy2-island.com/access/gogo03/capter00416.shtmlOLE DBプロバイダでデータソースに接続する
http://www.happy2-island.com/access/gogo03/capter00415.shtml★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク hana11111 2015年7月7日 6:03
すべての返信
-
まずAccessとSQL Serverとの接続を正しく理解する必要があります。実のところ
Access <=> OLE DB <=> ODBC <=> SQL Server
となっています。
ここでOLE DBプロバイダーはいくつもあります。
- Provider=MSDASQLと記述したりProviderキーワードを省略するとMicrosoft OLE DB Provider for ODBCが使われます。
- Provider=MSDataShapeと記述するとMicrosoft Data Shaping Service for OLE DBが使われるそうですが削除予定となって久しいですので使わない方がいいでしょう。
- Provider=SQLOLEDBと記述しMicrosoft OLE DB Provider for SQL Serverを使用することでODBCを経由しないのも1つの手かもしれません。
後は各々のOLE DBプロバイダーの接続文字列の書式に従います。
-
佐祐理様 ご回答ありがとうございます。
今まで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は使用していないと言う事になるのでしょうか。
-
「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」と記述します。
-
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
-
最初から質問の背景を含めて頂けていたらもう少し説明し易かったかなと思います。
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
-
掲載されているODBC接続文字列が微妙におかしいように思いますので、他にも参考となりそうなページを付加しておきます。
SQL Server Connection Strings
http://www.sqlstrings.com/SQL-Server-connection-strings.htmデータベース接続あれこれ
http://homepage1.nifty.com/kojama/works/rdbms/conn/connstr.html#mssqloledbODBCドライバでデータソースに接続する
http://www.happy2-island.com/access/gogo03/capter00416.shtmlOLE DBプロバイダでデータソースに接続する
http://www.happy2-island.com/access/gogo03/capter00415.shtml★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
- 回答としてマーク hana11111 2015年7月7日 6:03