问题
I am analyzing MS Access 2010 database files that were created by a person who has left the organization. All of the tables in one file, call it "Beta.accdb", are links to tables in another database file (call that one "Alpha.accdb"). I have verified that when I update data in Alpha, it automatically shows the updated data when I open Beta. This, and the reference material I found online, suggests that what was set up in Beta is in fact a true link rather than a copy.
However, when I look at the file size for Beta.accdb, it is nearly as large as the file size for Alpha.accdb. I would expect file Beta to be much smaller if it simply contained references and the actual data continued to live in Alpha. The similar size suggest that Beta holds a copy of the data in Alpha.
Is that in fact the case, or is something else going on? If there is a copy of the data in Beta, is there any hidden "gotcha" regarding automatic synchronization of the data between the two files, or is it safe to rely on the built in Access synchronization method?
回答1:
MS Access databases do not recoup previously used space unless requested to do so either using the Compact & Repair Database option, or by using the VBA CompactDatabase method of the DBEngine object, or the CompactRepair method of the Application object.
When you execute queries, even using data sourced from linked tables, MS Access will allocate space within the database with which to manipulate the data referenced by the query - this is why you'll still run into the hard 2GB MS Access database size limit when attempting to union two datasets from linked tables which would otherwise exceed the 2GB limit if stored in a single database.
来源:https://stackoverflow.com/questions/59866008/why-is-a-ms-access-database-file-with-only-linked-tables-comprable-in-size-to-th