今天早上被一阵电话吵醒了,客户反馈昨天运行的好好的程序今天突然爆出异常。远程查看后发现昨天夜里微软推送了KB4484127更新,推送更新后导致所有update操作无法正常运行,提示Query is corrupt。目前解决官方给出的解决方案就是一坨屎。所以目前最好的方案就是卸载KB4484127更新等待微软进一步推送新的更新。
2019/11/28更新
==========
微软已经发布了补丁解决这个问题
Version | Broken Build | Fixed Build | Release Date | Official link to fix issue |
---|---|---|---|---|
Access 2010 MSI | 7241.5000 | 7241.5001 | November 27, 2019 | |
Access 2013 MSI | 5189.1000 | 5189.1002 | November 27, 2019 | |
Access 2013 C2R | 5189.1000 | 5197.1000 | December 10, 2019 | Use File/Account/ |
Access 2016 MSI | 4927.1000 | 4927.1002 | November 18, 2019 |
==========
附上微软给的修复方法:
This will occur for an Update query that:
-
Updates a single table (i.e. it updates a table, rather than the output of a Select query, or join
-
Specifies a WHERE clause (i.e. has entries in the Criteria row in the query designer)
This issue impacts all supported builds of Access.
STATUS: FIXED
This issue will be fixed for all versions:
Version | Build | Release Date |
---|---|---|
Access 2010 | 7242.5000 | December 10, 2019 |
Access 2013 | 5197.1000 | December 10, 2019 |
Access 2016 MSI | 4939.1000 | December 10, 2019 |
Access 2019 Volume License | 10352.20054 | December 10, 2019 |
Access O365/2019 (Version 1911) | 12228.20152 | November 24, 2019 (estimated) |
If you encounter this issue before the fix is available, the recommended workaround is to update the query so that it updates the results of another query, rather than updating a table directly.
For example, if you have a query similar to:
UPDATE Table1 SET Table1.Field1 = "x" WHERE ([Table1].[Field2]=1);
You can create a new query (Query1) defined as:
SELECT * from Table1;
And update your original query to:
UPDATE Query1 SET Query1.Field1 = "x" WHERE ([Query1].[Field2]=1);
By replacing all references to Table1 with Query1
This will produce the same results, but avoid the error.
大概意思就是在应用了更新以后,会导致单表的Update(必须带where条件的)查询会出现错误,我这边测试的确如此。