「連続フォーム」サブフォームを持つMicrosoftAccessアプリケーションがあります。アプリケーションでそのフォームにアクセスすると、SQL Serverに「大量の」ロック(1000を超える)があることがわかりました。[マスターデータベースビューsys.dm_trans_locksから1000レコードを選択することで見つかりました]。
フォームのデータソースは、qryProspectsummaryと呼ばれるパススルークエリです。次に、SQL "EXEC qryProspectSummary"を使用して、必要なデータを返すストアドプロシージャを呼び出します。
ストアドプロシージャ"qryProspectSummary"は、単純な複雑なselectステートメントであり、ネストされたselectとunion、および複数のテーブルの結合が含まれています。SQL Server Management Studioから実行すると、正しい結果が生成され、データベースのどの部分もロックされません。
データソースのレコードセットタイプを「スナップショット」に設定しました。
Accessがこれらすべてのロックを解除するのを防ぐにはどうすればよいですか?それは、単なるデータスナップショットであるはずのマルチユーザーを効果的に破壊します。