зависит от нагрузки, если данных и изменений очень много и критично быстродействие, то только 3-й вариант CDC - может работать без нагрузки на основную БД (на выделенном сервере), однако требует MS-SQL Enterprise Edition
дополнительно посмотрите проект AutoAudit на codeplex - возможно вам подойдет.
разница между 1,3 и 2 вариантом, в том, что 1и3 вы будете видеть историю на физическом уровне БД (таблицы БД), во 2-ом на логическом уровне прикладных C# Объектов. Однако логировать придется либо на клиенте, либо на сервере приложений - может стать критично к памяти по количеству обрабатываемых записей (если в транзакции более 10тысяч изменений). Опять же если у вас в БД есть хранимые процедуры, то во 2-ом варианте вы упустите из аудите их изменения