Tre*_*ent 4 sql-server ms-access
我们使用MS Access作为我们其中一个系统的GUI,但是我们遇到了Access在底层表或行上持有锁的问题,这会阻止SQL服务器对此数据运行任何更新查询.这是有问题的,因为虽然我们的Access前端只需要对此数据的只读访问,但我们有适当的系统定期刷新数据.由于Access已经锁定数据,因此这些刷新操作失败(或无限延迟).
通过打开Access前端并使用sys.dm_tran_locks DMV显示数据锁定来说明此问题.我重现问题的步骤是:
当用户点击以在前端显示单个记录时,会出现第二个问题.当屏幕上显示单个记录时,SQL Server DMV会显示以下锁定:3x对象,1x密钥,1x页面.密钥是共享锁,其他是意图共享.同样,命令状态暂停,等待类型为ASYNC_NETWORK_IO.只要用户正在查看记录,就会保留这些锁
我们需要在无限期的基础上停止访问这些锁.不幸的是,MS Access不属于我的技能组合,因此我不知道需要做些什么来解决这个问题.
我没有解决这个问题,但一位同事做了.所做的是,他没有创建到SQL Server表的链接表,而是创建了链接表到视图.观点看起来像这样:
CREATE VIEW dbo.acc_tblMyTable
AS
SELECT * FROM tblMyTable WITH (NOLOCK)
Run Code Online (Sandbox Code Playgroud)
没有锁定,作为奖励Access将数据视为只读.
但是,请确保您了解使用时会发生什么NOLOCK.
不幸的是,MS Access不属于我的技能组合,因此我不知道需要做些什么来解决这个问题.
摆脱Access :)
| 归档时间: |
|
| 查看次数: |
8607 次 |
| 最近记录: |