Do you want me to provide the layout of my Audit Table?
The Table that contains the...
UserId
TableId being accessed
FunctionId being accessed
Function being performed...INSERT, UPDATE, DELETE, SELECT
Date and Time Stamp.
That the administrators can access to Audit what happened and if a function failed and why it failed.
Doesn't SQL do that automatically? Isn't that essentially what's in the systems and transaction logs?
No; SQL will not provide you with what User did what Function to a particular Data Record at a given time.
If you use Transaction Processing, SQL Server will, if you have the capability switched on, keep a very large textual log of every SQL Statement executed since the beginning of the creation of that log.
That log becomes prohibitively large by end of day.
As an example, the Transaction logs contains SQL Statements, but you don't know what screen or batch program invoked that SQL Statement.
Another limitation is that in some environments, the users logging in to use the application may be more than the one person allowed to log into a workstation. I use the Id of the Software Application Log On, not the Workstation Log On.
My Audit methodology can zoom in on the exact functionality through which that SQL Statement was called and since I don't store the entire SQL statement, the Audit Table doesn't not become monstrously large for a very long time.