SQL Server implements transactional replication via the Snapshot Agent, the Log Reader Agent, and the Distribution Agent. As with snapshot replication, the Snapshot Agent prepares the initial snapshot of a transactional publication. The Log Reader Agent scans the transaction log on the publisher and detects the changes made to the data after the snapshot has been taken and records them in the distribution database. (With concurrent snapshot processing, the Log Reader Agent can actually log changes made during the snapshot generation, as we'll discuss below.) The Distribution Agent reads the changes recorded in the distribution database and applies them to subscribers.