Sql-server – How to check if a query (CRUD) was made on a database

sql server

I'm sorry for the title but I have a problem which I can't sum up in a sentence.

I have a database with 100 tables and probably a thousand columns. Now, every time something changes in the database, for example:

  1. New table is created
  2. New column is created (Insert)
  3. Column is updated (Update)
  4. Column is deleted (Deleted)
  5. And a column is read (Read)

I would like to know.

From what I have read there are 3 options but I have an issue with all three:

  1. SQL Profiler (soon to be obsolete)
  2. Extended Events (too complex for me)
  3. Open MSSQL query field and go crazy

For now, I am trying to go with the third. I am hoping to use sys.object or sys.dm_db_index_usage_stats and any other table to get what I want.

So, my question is: Do you think there is a better alternative or not?

Best Answer

I would have thought that the Audit functionality would meet your requirements. If you search for SQL Server Audit you'll get lots of hits - it is very configurable but too big to describe fully here. Have you looked at that ?