DOBON.NET DOBON.NETプログラミング掲示板過去ログ

SQLServer2012より後の製品でOLEDBサポート廃止時の接続方法について。

環境/言語:[Wndows8]
分類:[.NET]

お世話になります。


Server2003、SQLServer2000、ACCESS2010、VB2012、Windows8で開発をしております。


SQLServerにおいては、SQLServer2012より後の商品から、OLEDBサポートが廃止されると伺っております。


SQL Server、OLE DBサポート廃止へ - ODBC推奨
http://news.mynavi.jp/news/2011/09/01/083/index.html


SQL Server 2012 以降の SQL Server Native Client OLE DB プロバイダーの廃止
http://msdn.microsoft.com/ja-jp/library/hh510181.aspx


また、ACCESSにおいては、ACCESS2013から、SQLServerとリンクするための、adp機能が、なくなっているとのこと。


【Access】Access2013ではadp(AccessProject)が使えない。。。
http://zenback.itmedia.co.jp/contents/plus-sys.jugem.jp/?eid=251


マイクロソフト社は、ODBC推奨の方針に切り替えた、とのことですね。


ACCESSから、外部データリンクで、ODBCを使い、SQLServerのテーブルの参照は出来るのですが、フィールドのプロパティの変更、レコードの追加、削除等は、出来ないようです。サーバーを開かずとも、また、専用のアプリを作らなくても、データベースの内容を編集出来るところに、adpの有り難さがあったのですが、残念です。


本日は、VB.NET2012から、ACCESS、SQLServerへの接続方法について、お伺いさせてください。


現在、ACCESSへの接続はOLEDB、SQLServerへの接続はSQLClientのメソッドを使用しております。


Dim cn As New Oledb.OledbConnection(接続文字列)
Dim da As Oledb.OledbDataAdapter
Dim cmd As Oledb.OledbCommand



Dim cn As New SqlClient.SqlConnection(接続文字列)
Dim da As SqlClient.SqlDataAdapter
Dim cmd As SqlClient.SqlCommand



という具合です。


ACCESS2010、SQLServer2000を使っている現時点では、これらのメソッドでも、問題がないのですが、今後、ACCESS2013以降、SQLServer2012の次の商品を使うようになった場合は、これらのコードも使えなくなりますでしょうか。 下記のような、ODBC接続に切り替えた方が、よろしいでしょうか。


Dim cn As New Odbc.OdbcConnection(接続文字列)
Dim da As Odbc.OdbcDataAdapter
Dim cmd As Odbc.OdbcCommand



実物がございませんので、テストができず、ご質問させて頂きました。


どうぞよろしくお願い致します。
■No31816に返信(けいさんの記事)
> これらのコードも使えなくなりますでしょうか。
現時点の最新ミドルウェアって何でしょうね。
Entity Framework 6.0 あたりなのかな。


> これらのコードも使えなくなりますでしょうか。
明確な解というものは無いと思いますよ。

まだ未定の先のことは誰にも分かりません。おそらく Microsoft 社員であっても。
直前で方針が変わることもありますしね。

http://msdn.microsoft.com/ja-jp/library/dd297649.aspx
》 Microsoft は、新しいデータアクセス API を非常に頻繁にリリースする
》 ことで有名であり、プログラマのコミュニティが歯軋りすることも多い。
》 今また新しいAPI を続けてリリースしなければならないのはなぜだろうか。
》 答えは、アプリケーション開発の発展の姿に潜んでいる。


かつて Access も、DAO から ADO (というか OLE DB) に移行するように
言っておきながら、さらに DAO ベースの発展を進めていった経緯がありますし。
(DAO に追加された新機能は、ADODB からは利用できないまま…)


当の ODBC にしても、旧 VB では RDO の廃止を経験し、ADO+ 時代には
.NET 1.0 のリリースに間に合わず、ADO.NET の 追加モジュール
Microsoft.Data.ODBC (通称 ODBC .NET) での後追い対応となってみたり、
.NET 2.0 ではようやく .NET 本体に組み込まれたものの、名前空間が
System.Data.Odbc に変更されるなど、厄介な遷移を続けています。

もしかしたら今後、新たな ODBC ラッパーが登場する可能性も
あるかもしれません。その時、既存の資産がどこまで使えるかは未知数です。

情報の無い現時点では、「その時になったら考える」か、あるいは
ミドルウェアの依存度を減らすためのモデル設計にしておくことで
対処していくぐらいしか無いのでは…。


> 下記のような、ODBC接続に切り替えた方が、よろしいでしょうか。
他の接続方法と比較してみた結果、System.Data.Odbc で充分な機能と
処理性能が得られるようであれば、それも選択肢の一つかと思います。
ただ、それが将来にわたってサポートされるかどうかの保証はありません。

変更点が少ないのは、ストアド・プロシージャー/ストアド・ファンクションに
比重を置き、クライアント側でのカーソル処理を極力排することでしょうか。

ストアドの呼び出しぐらいなら、万一、ミドルウェアに変更があったとしても、
結果セットの受け取り方が変わるぐらいで、呼び出しそのものの変更点は
それほど多くないでしょうし。
■No31818に返信(魔界の仮面弁士さんの記事)

ありがとうございます。
そうですね、その時になってみませんと、わかりませんね。
逐一、対処していきたいと思います。
ミドルウェアの種類につきましては、詳しくございませんが、
ストアドを使えば、確かに、そうですね。
ありがとうございます。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板