If the Database is down or temporarily unavailable where is the data to go?
You can set up an external spool file and have another process (thread) access the spool file and send it to the database when available.
The same with current information you can do a check for database connectivity and use the spool file when no database available.
Database availability is a mission critical process perhaps having a replicated SQL server (backup database) is required.
I’m not sure as to how often this data is required by another party/program/service or how often it is updated etc.
i.e. you do the writes to the spool/flat file in the enter attendance worker thread and then use another thread to check for database connectivity and write the queue to the database when available.