one*_*hen 3 ms-access ms-access-2007 jet
DAO 3.6存在问题,因为它不支持行级锁定.有关详细信息,请参阅此知识库文章.
我从Access团队的博客中了解到:
在Office Access 2007中,将向DAO添加新对象,属性和方法,以支持Access数据库引擎中的新功能.
从Access2007 Visual Basic编辑器的对象浏览器中查看该库,新的化身称为ACEDAO.我可以在MSDN上的修补程序中找到acedao.dll,但没有别的.
有谁知道在哪里可以找到ACEDAO的最终用户文档?
如何发现ACEDAO是否支持行级锁定?
我不相信该知识库文章有任何变化.但是,您必须记住如何实现记录锁定.
请记住,当网络上的任何用户打开任何表并且启用了行锁定时,DAO/ADO/ACE如何在代码中打开该表无关紧要.
具有行锁定的任何现有用户将强制对他们正在使用的那些记录进行行锁定.而且,由于记录集代码很少会在任何合理的时间内保持打开/锁定记录,因此页面锁定或行锁定很少会在这里产生影响.因此,在大多数情况下,当用户在表单中编辑数据时需要锁定.在代码的情况下,它往往是一个罕见的问题.
因此,tools-> options中的用户设置确实为用户确定了这一选择.为了在这里真正清楚而不是分裂,UI的行锁定设置并没有真正覆盖选择,就像默认情况下它强迫问题一样.
记住打开该功能时行锁定的工作方式,喷气引擎只是将记录的大小扩展到一个页面的大小,因此只使用像以前一样的简单旧式页面锁定.这就是我强迫这个问题的意思.如果用户打开行锁定,它就不会使bean的山丘变得不同,然后你试着抓住一个用户锁定的记录,该记录集没有用行锁定打开reocrdsset(而不是页面锁定) ).您不能被锁定和编辑记录,因为这再次归结为页面分辨率.
没有真正的行锁定.但是,如果将记录的大小扩展为总是一页,那么您将以环形方式实现相同的目标.
鉴于以上信息,这意味着两件事:
首先,如果用户已经使用表单锁定了记录,那么如果将reocdset作为页面或行打开,则不会产生任何影响.编辑数据的用户将确定将耗尽多少页面(如果打开行锁定,则它是整页数据).
第二期.您想要长时间地考虑使用此选项,因为它会导致文件膨胀非常快,因为编辑的每个记录都将被强制占用一个数据库页面.如果您正在运行更新数千条记录的代码,那么您可能不想这样做.然而,用户无法在一天内真正编辑那么多记录,并且通过每日压缩例程,它再次成为问题.
从逻辑上讲,这意味着该选项实际上仅对用户编辑数据时非常有用.但是对于记录集代码,它很少会帮助甚至适合使用行锁定.
在一天结束时,如果您有多个用户试图以相同的形式获取相同的数据,那么该功能才真正适用.因此,这更像是使用代码+ reocordsets的用户界面功能.
您可能会发现ACE + dao可以打开带有行锁定的reocrdset,但为什么要担心?你不要使用dao,反正你也不喜欢它.而且,它无论如何都不会改变你的用户场景.
- 编辑:
我没有方便的链接来解释此记录页锁定.我知道我在某个地方看过这个,但我没有链接.
过去几天我一直很忙(我是2010年测试版的一部分,周一还有向公众注册的CTP发布).所以,我一直很忙.
但是,您可以尝试一些显示此功能的代码.以下代码导致mdb中大约1 meg的膨胀,并且没有锁定行锁定.(它从5.8兆到大约6.5).
Dim rst As DAO.Recordset
Dim i As Long
Dim t As Single
Set rst = CurrentDb.OpenRecordset("contacts")
t = Timer
Me.Text1 = "working..."
DoEvents
Do While rst.EOF = False
rst.Edit
i = i + 1
rst!City = "ci " & i
rst.Update
rst.MoveNext
If i Mod 500 = 0 Then
Me.Text1 = i
DoEvents
End If
Loop
t = Timer - t
Me.Text1 = "done in " & t & " seconds"
Beep
Run Code Online (Sandbox Code Playgroud)
如果运行带有记录锁定的SAME代码,则该文件的大小将达到123兆.这里是一个示例mdb的链接,其中包含上面的代码
http://www.kallal.ca/test/bloat.zip
所以,请在上面下载.使用tools-> options-> advanced-> open并使用行级锁定运行它.
然后,清空表格.紧凑和维修.更改上述设置并再次运行(确保退出,然后在更改该设置后重新进入数据库).
如果你在没有行锁定的情况下运行,文件增加大约一兆.如果在行锁定的情况下运行它,则会增加超过110兆的数据文件.这确实是一个非常大的差异.
| 归档时间: |
|
| 查看次数: |
5011 次 |
| 最近记录: |