• First, running CHECKDB monthly probably isn't often enough. Basically you are saying we can live with having to go back possibly months to a clean database. Check this post[/url] for frequency suggestions.

    Depending on the size of the database and the resources on the server you can run CHECKDB on a production database, which you can see in this survey[/url] is the way the majority of people do it. You should also check out this post[/url] for other options.

    You don't have to run CHECKDB on the production server, running it on a restored backup is fine to find corruption. The best practice for repairing corruptions is a restore of a clean (non-corrupt) backup which is why monthly probably isn't often enough, so it doesn't matter where you find the corruption, the repair process is the same and has to take place on the production server. There are corruptions that can be repaired without a restore, for example, a corruption found in a non-clustered index can normally be repaired by rebuilding the index, but you should still check the underlying I/O subsystem for problems after making this repair.