C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


■87371 / )  Re[3]: OLEDBでのMax Locks Per Fileの設定
□投稿者/ 魔界の仮面弁士 (1666回)-(2018/05/15(Tue) 18:00:56)
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 側の システム全体設定で
指定することもできるかと思います。



> 記述に誤りがあるのか、そもそも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
返信 編集キー/


管理者用

- Child Tree -