投稿者 魔界の仮面弁士  (社会人) 投稿日時 2012/6/11 14:06:56
> ADO.NETだと思って使用していました…。
ADODB 名前空間の Connection だとしたら、ADO.NET ではなく ADO となります。
OleDb 名前空間のものは、ADO.NET には違いありませんが、ブリッジ接続となります。

System.Data.OleDb 名前空間そのものは ADO.NET ですし、
System.Data.Odbc  名前空間も、一種の ADO.NET ですが、
これらは OLEDB 経由/ODBC 経由での ADO.NET 接続となります。

これらのブリッジ接続を利用して SQL Server にアクセスすることも可能ですが、どうせならば、
『SQL Server へのADO.NET接続』には、『System.Data.SqlClient 名前空間』のオブジェクトを
利用するようにしましょう。SqlClient は SQL Server 7.0 以降に最適化されています。
(ADOMD.NET なら、Microsoft.AnalysisServices.AdomdClient 名前空間です)

※なお、OLE DB Provider との比較のため、System.Data.SqlClient のライブラリは
 「.NET Framework Data Provider for SQL Server」と呼ばれることがあります。


これは SQL Server に限った話ではありません。たとえば『Oracle への ADO.NET接続』なら、
ODP.NET と呼ばれる Oracle.DataAccess.Client.OracleConnection が推奨されており、
現在では、旧テクノロジーである下記名前空間からの接続が非推奨となっています。
 System.Data.OleDb.OleDbConnection
 System.Data.Odbc.OdbcConnection
 Microsoft.Data.Odbc.OdbcConnection


もちろん、OLE DB 以外の接続手段が用意されていないデータベース等において、
System.Data.OleDb.OleDbConnection 等を使う事は問題無いですけれどね。


> プロバイバーの書き方については、これから早速試してみます。
どうしても OLE DB で繋ぐのであれば、下記のプロバイダーを利用できます。
(この他、サードパーティから市販されているプロバイダーもあります)

「SQLOLEDB」 … SQL Server 6.5以降用 OLE DB プロバイダー
「SQLNCLI」  … SQL Server 2005 用 Native Client OLE DB プロバイダー
「SQLNCLI10」… SQL Server 2008 用 Native Client OLE DB プロバイダー
「SQLNCLI11」… SQL Server 2012 用 Native Client OLE DB プロバイダー



接続文字列は、ConnectionStringBuilder を通じて生成することもできます。

Dim ocb As New OleDbConnectionStringBuilder()
ocb.Provider = "SQLNCLI10.1"
ocb.DataSource = "serverName"
ocb("Initial Catalog") = "targetDB"
ocb("User ID") = "sa"
ocb("Password") = "allsys"
' Provider=SQLNCLI10.1;Data Source=serverName;Persist Security Info=False;Password=allsys;User ID=sa;Initial Catalog=targetDB 
connectionString = ocb.ToString()
Dim con As New SqlConnection(connectionString)
con.Open()



Dim scb As New SqlConnectionStringBuilder()
scb.PersistSecurityInfo = False
scb.UserID = "sa"
scb.Password = "allsys"
scb.InitialCatalog = "targetDB"
scb.DataSource = "serverName"
' Data Source=serverName;Initial Catalog=targetDB;Persist Security Info=False;User ID=sa;Password=allsys 
connectionString = scb.ToString()
Dim con As New SqlConnection(connectionString)
con.Open()


上記はサンプルなので、各パラメータは適宜調整してください。

また、実際に運用するアプリで固定的に「sa アカウント」で接続することは避けるべきです。
http://www.atmarkit.co.jp/fwin2k/special/secseminar2003/wsseminar1_04.html



以下、関連情報として:

・SQL Server Native Client と ADO の併用
http://msdn.microsoft.com/ja-jp/library/ms130978.aspx
》 新しいアプリケーションを開発している場合は、SQL Server の
》 最新バージョンのすべての新機能にアクセスできるように、
》 SQL Server Native Client ではなく、ADO.NET および
》 .NET Framework Data Provider for SQL Server の使用を
》 検討することをお勧めします。


・SQL Server 2012 は、OLE DB をサポートする最後のバージョンとなる見込み
http://news.mynavi.jp/news/2011/09/01/083/index.html
http://www.infoq.com/jp/news/2011/09/OLE-DB-End
》 SQL Serverのデータにネイティブにアクセスする方法として
》 「OLE DB」のサポートを廃止し、かわりに「ODBC」に比重を移すことを発表した。
》 Denali(SQL Server 2012)はOLE DBをサポートする最後のSQL Serverになる。
》 マイクロソフトによると、ADO.NET(OLE DBの上で実行できる)は
》 継続してサポートされるが、非OLE DBプロバイダにアップデートする必要がある。