My conversations with my DBA friends are always interesting. They have unique ways to solve problems and organizations take them for granted. Most of the DBA’s want to be in control of their environment. There is no second thought on it when it comes to delivery from their side.
In a recent conversation, one of my friend asked me if there was a way to identify the tables that were created in the database in the past one week. He was asked by his security team to bring a report on when an object is created in the production server. They want to make sure no unnecessary objects are getting created in the database without prior approval.
Though my thought process was to build an audit for this, I thought of sending a simple script that can be used to identify the same.
SELECT o.name AS [Object_Name],
o.modify_date [Modified_Date] FROM sys.all_objects o
LEFT OUTER JOIN sys.schemas s
ON o.schema_id = s.schema_id
WHERE create_date > (GETDATE() - 7) OR modify_date > (GETDATE() - 7)
A sample output is shown below:
As you can see, the query can be added to a SQL Server job and we can send the same as an email to the DBA or security team automatically. The other option I gave my friend was to run an SSRS report and schedule a report output via email to the Security team.
If you are person not doing such hi-fi stuff of sending reports, then there can be a much easier way to find this information. We can use the “Schema Change History” report available inside SQL Server Management Studio to get this information.
A typical output is shown above. This is similar to the query output we discussed before but in a built-in report that is out-of-box. Most of these SQL Server Management Studio tips are simple and are hidden in some shape or form.
Do let me know if you every have had the need for such requirements? What did you do in that case? Would love to hear your experience and implementation for sure.
Reference: Pinal Dave (https://blog.sqlauthority.com)