SQLiteでエラーが発生したので調査してみました。
目次
SQLiteでThe 'DbProviderFactories' section can only appear once per config file.というエラーが発生
あるソフトウェアを納品したところ、このエラーが出るとの報告がありました。
このエラーが発生するPCと発生しないPCがあるようです。
調査したところ、エラーが発生するPCのmachine.configに以下の記述がありました。
1 2 3 4 5 6 7 |
<DbProviderFactories> <add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxx"/> <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=yyyyyyyyyy"/> <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=zzzzzzzzzz" /> </DbProviderFactories> <DbProviderFactories/> </system.data> |
XMLのネスト構造が崩れているようです。
最後の<DbProviderFactories/>
を削除する必要があります。
以下が正しい記述です。
1 2 3 4 5 6 |
<DbProviderFactories> <add name="IBM DB2 for i5/OS .NET Provider" invariant="IBM.Data.DB2.iSeries" description=".NET Framework Data Provider for i5/OS" type="IBM.Data.DB2.iSeries.iDB2Factory, IBM.Data.DB2.iSeries, Version=12.0.0.0, Culture=neutral, PublicKeyToken=xxxxxxxxxx"/> <add name="Microsoft SQL Server Compact Data Provider" invariant="System.Data.SqlServerCe.3.5" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.0.0, Culture=neutral, PublicKeyToken=yyyyyyyyyy"/> <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=zzzzzzzzzz" /> </DbProviderFactories> </system.data> |
IBM i Access for Windowsの.NET Provider for DB2の不具合?
http://www-912.ibm.com/n_dir/nas4apar.nsf/ALLAPARS/SE45767
に以下の記述がありました。
Abstract
CA400EXP-INSTALL Corruption of machine.config XML data may occur
Error Description
Under unknown circumstances, corruption to the machine.config
XML file is occurring when the .Net data provider is installed
(either as part of a Complete or Custom install type). The
corruption is isolated to portions of the XML data related to
the DbProviderFactories - and generally has been observed to
include duplication of some lines of the XML data.
This corruption may be manifested as unusual errors from the
Windows operating system itself. For example, use of Event
Viewer or other MMC (Microsoft Management Console) based
utilities may fail. Other failure conditions from .Net related
resources may also be observed.
Problem Summary
See Error Description.
Problem Conclusion
A preventive fix will be provided which will eliminate the
likely cause of the machine.config corruption.
A corrective fix to update already corrupted machine.config
files will not be provided. Utilize the documented local fix
or circumvention if possible.Temporary Fix
Comments
Circumvention
If the .Net data provider is not needed, this problem may be
avoided by performing a custom install and ensuring the .Net
Data provider will not be installed. If the .Net provider is
required, no circumvention is known. Utilize the local fix to
resolve the issue.
PTFs Available
R710 SI498001000
結論
IBM i Access for Windowsで、特に.NET Provider for DB2のV6R1またはV7R1をインストールするとmachine.configのネスト構造が崩れるようです。
この件の対応には、マニュアルでエディターを使ってmachine.configを修正すればよいです。
コメント