Anoop,
Тип задания таймера "развертки", который вы описываете, довольно распространен, и я сам написал несколько из них для разных проектов. В этом типе задания таймера вы обрабатываете набор сайтов, веб-сайтов или списков для выполнения какого-либо обслуживания. Как правило, проще всего обрабатывать один сайт / веб / список за раз, и выполняемая задача не относится к типу, который необходимо выполнять с максимальной скоростью (то есть что-то, что потребует параллельной / многопоточной модели обработки для завершить быстро).
В этом типе сценария я обычно строил свои задания таймера, чтобы использовать SPJobLockType «Job». Как вы заметили, это гарантирует, что в любой момент времени в ферме выполняется только один экземпляр задания таймера. Это позволяет избежать коллизий, которые могут возникнуть, если несколько экземпляров выполняются с SPJobLockType, равным «None», и также позволяет избежать запутанного (по крайней мере, мне кажется, запутанного) механизма операции, который связан с SPJobLockType «ContentDatabase».
Вот ссылка на задание таймера, которое я написал и опубликовал в CodePlex. Он выполняет тот же тип развертки (на немного более высоком уровне), который вы описывали: http://blobcachefarmflush.codeplex.com/SourceControl/changeset/view/53851#797787. Экземпляр задания таймера создается в FeatureReceiver со следующей строкой кода:
BlobCacheFarmFlushTimerJob newJob = new BlobCacheFarmFlushTimerJob(jobName, housingWebApp, null, SPJobLockType.Job);
Исходя из моего понимания того, что вы написали, я считаю, что SPJobLockType для "Job" будет уместным. Вы хотите, чтобы одновременно выполнялся только один экземпляр вашего задания (чтобы два или более экземпляров одного и того же задания не могли обработать один и тот же SPSite).
Надеюсь, это поможет!