Hi Mike33511,
You could be your own worst enemy, with statements like this:
> ...I have also run a SQL Shrink Database.
Running CheckDB in SQL Server and compacting your Access FE file is fine. But shrinking a SQL Server database is rarely needed and will introduce fragmentation problems.
Why? Because shrinking a SQL Server database is known to cause index fragmentation. As a result, any data read operations are going to need to read more 8 KB pages into memory, just to read the same about of data, therefore adding more memory pressure. SQL Server only reads complete pages of data; it cannot read 1/3 or 1/2 of an 8 KB page of data. If your data is spread out in more pages, due to fragmentation, you are increasing CPU and I/O requirements, as well as memory required to read the additional pages into RAM.
What’s So Bad About Shrinking Databases with DBCC SHRINKDATABASE?
https://www.brentozar.com/archive/2017/12/whats-bad-shrinking-databases-dbcc-shrinkdatabase/
Here is a case when shrinking is okay, but the DB sizes mentioned are much larger than what your SQL Express can handle (10 GB limit):
What If You Really DO Need to Shrink a Database?
https://www.brentozar.com/archive/2020/07/what-if-you-really-do-need-to-shrink-a-database/
A quick note about the second article linked above. In the section titled "Don’t shrink. Do this instead:", item #2 reads:
"Move objects to the new filegroup using CREATE INDEX…WITH DROP_EXISTING = ON, ONLINE = ON commands"
I'm fairly certain that the free SQL Express does not support any ONLINE=ON actions. So, you will need a short outage window to do this step.
Tom Wickerath
Microsoft Access MVP Alumnus (2006 -- 2012)