■87388 / inTopicNo.6) |
Re[4]: OLEDBでのMax Locks Per Fileの設定 |
□投稿者/ dekoderu (4回)-(2018/05/16(Wed) 18:35:28)
|
2018/05/16(Wed) 18:41:11 編集(投稿者)
■No87371 (魔界の仮面弁士 さん) に返信
返信いただきありがとうございます。
> ■No87362 (dekoderu さん) に返信 >>oCommand = oConn.CreateCommand()を削除しても >>エラーが発生しました。 > まぁ、そもそも提示のコードだと、構文エラーになるはずなんですけれどね。 > 『"』が奇数個になっていますし。 >
『"』の記述を間違えて投稿してしまっていました。 実際に動いているソースコードでは構文エラーが発生しないようになっています。 お手数をおかけしました。
> >>Jet OLEDB:Max Locks Per File=100000の >>記述を追加する前はエラーが発生しないため、 > > 上記エントリを含めると、当方でも駄目でした。 > 当方で利用したプロバイダは下記の通り。 > 64bit Microsoft.ACE.OLEDB.15.0 > 64bit Microsoft.ACE.OLEDB.12.0 > 32bit Microsoft.Jet.OLEDB.4.0 > 32bit Microsoft.Jet.OLEDB.3.51 > > > 代わりに、Jet OLEDB:Registry Path を通じて設定するようにしてみてください。 > > oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" & _ > "Data Source=""C:\temp\db1.accdb"";" & _ > "Jet OLEDB:Registry Path=SOFTWARE\MyCorporation\MyApplication\1.0" > > あるいは、アプリ固有のカスタムエントリを作る代わりに、 > KB815281 の「方法 1」のように、HKLM 側の システム全体設定で > 指定することもできるかと思います。
Registry Pathを使用してできるんですね。 対応を検討したいと思います。
> > > >>記述に誤りがあるのか、そもそもOLEDBでは >>Max Locks Per Fileが設定できないとか >>あるんですかね・・・ > > KB815281 の「方法 2」でも示されていますが、DAO 接続時には設定できるようです。 > (有効になっているかは判断できませんでしたが) > > Dim de As New Dao.DBEngine() > de.SetOption(Dao.SetOptionEnum.dbMaxLocksPerFile, 100000) > Dim db As Dao.Database = de.OpenDatabase("C:\temp\db1.accdb") > db.Close() > System.Runtime.InteropServices.Marshal.ReleaseComObject(db) > System.Runtime.InteropServices.Marshal.ReleaseComObject(de) > > > Jet OLEDB:Max Locks Per File については、ADO.NET どころか、 > ADO でさえ弾かれました。.NET はおろか、Access VBA からも駄目。 > > それどころか、JET 4.0 / Jet 3.51 プロバイダでも設定できませんでした。 > MDAC 2.5 の頃に実験した時は設定できた気もするのですが…自信なし。 > http://www.gizcollabo.jp/vbtomo/log/archive/vbqanda_41433_0.html
詳しく調査していただきありがとうございました。 大変助かりました。
|
解決済み
|