.NetFrameWork DbProviderFactoriesセクション重複エラー

Windows Server 2012でSQL Server 2014 Expressを使っているが、Microsoft SQL Server Management Studioでクエリ デザイナーの実行やテーブルの行編集しようとしたとき、又はSQL Server インポートおよびエクスポート ウィザードでデータソースを選択しようとしたとき等に例外が発生し、下記のようなエラーメッセージが表示される。

'DbProviderFactories' セクションは、1 つの構成ファイルで 1 回しか使用できません。 (System.Configuration)

画像

Visual Stadioや.NetFrameWorkそれにSQL Serverのインストール順序によっては.NetFrameWorkのmachine.configの設定に複数の'DbProviderFactories' セクションができてしまうらしい。

全部アンインストールして所定の順序でインストールすれば良いらしいが、面倒だし所定の順序というのがわからない。


.NetFrameWorkのmachine.configを開いて見たら、このようになっていた。

<system.data>
<DbProviderFactories>
<add name="IBM DB2 for i .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for IBM i" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=9cdb2ebfb1f93a26"/>
</DbProviderFactories>
<DbProviderFactories/>
</system.data>

IBMのiAccess をインストールをしたときに'DbProviderFactories' セクションが設定されたようだが、デフォルトの何も無い設定 <DbProviderFactories/> も残ったままになっている。

このため「1 つの構成ファイルで 1 回しか使用できません」と怒られたのだろう。


ということで<DbProviderFactories/>の行を削除してみたところ、エラーは出なくなった。


.NetFrameWorkのフォルダは32ビットと64ビットの両方存在するので両方のmachine.configを修正しておく必要がある。


それぞれのフォルダは下記のようになっている。

64ビット用:%windir%\Microsoft.NET\Framework64\[.NetFrameWorkのバージョン]\Config\

32ビット用:%windir%\Microsoft.NET\Framework\[.NetFrameWorkのバージョン]\Config\


ちなみに、32ビット用だけを修正したら、Microsoft SQL Server Management Studioでのエラーが解消され、

64ビット用も修正したら、SQL Server インポートおよびエクスポート ウィザードでのエラーが解消された。

".NetFrameWork DbProviderFactoriesセクション重複エラー" へのコメントを書く

お名前
メールアドレス
ホームページアドレス
コメント