Yupp! Makes perfect sense.
So the missing piece of your scenario is being able to change the rotation runtime on the weekend. To do that you'll want to create an SP that makes the change in the Rotation table. Then, call that SP in the BatchPrecode col of the SettingsServer table for that weekend row.
You'll have 2 rows for checktable in the Rotation table and you'll toggle which one is active.
Your SP will check the day, and if it's a weekend day, it'll set that row active, and the weekday row inactive, and vice versa.
Now, you can handle the other toggle a couple ways. You can either have a PostBatch code that changes it back when it's done, or you can put the precode in the weekday row as well and it'll always check for the day.
Does that make sense?
Anders Pedersen
Backstory:
2 servers, each with 900+ databases ranging from about 10GB to a few TB.
Not much traffic at night due to the nature of our business (heavies usage would be between 7 AM East coast time, to about 7 PM West coast. No idea if we have users in Hawaii, Alaska or territories, if we do not many).
1 server with fewer databases, but one that is 7 TB. Regular CHECKDB gets through everything but this one database.
My main concern right now is the 2 servers with tons of databases.
Here is what I am thinking, with fine tuning as I see it in action:
Dynamic thresholds around 100 GB (default) for switching to TABLECHECK. This should allow most of the smaller client databases to run CHECKDB.
Rotational Scheduling, where it run 3 hours (1 AM to 4 AM) per day during weekdays, 8 hours (1 AM to 9 AM) during the weekend. Weekend some time would be interrupted earlier if there is patching on the server, being able for it to restart if it does would be optimal.
This is what I have done on my own test server to test it, hopefully not too far off.
So I set the Rotation for only Time to be IsActive = 1.
Leave the System CHECKDB active from 22:00 to 22:30.
AUTO active for the User databases, two records, one for Weekday and one for Weekend.
On these 2 servers, I THINK I could increase NumConcurrentOps and DBInternalThreads, only backups should really be running at that time of night, with maybe a few occasional users working way too late.
Comments and suggestions welcome. First time I am implementing one of your solutions.