Before an upgrade I wanted to remove any unused databases. To help find them I created a generic sql-job that every 10 mins would log connections.
I say ‘generic’ as the job needed to work on SQL2000, SQL2005, and SQL2012. So I created it using SQL-2000 enterprise-manager and scripted it out as ‘createJob_DbaAudit.sql’.
The script in job-step-1 (‘Build Table – if needed’) was …
select @@ServerName AS Server, db.[name] [Database], getdate() [TimeStamp], Hostname, Program_name, Net_library, Loginame into master.dbo.tbl_connections from master.dbo.sysdatabases db join master.dbo.sysprocesses pr on db.dbid = pr.dbid where db.dbid > 4
… this step was set to continue on to the next-step regardless of whether it succeded or failed.
Step-2 (‘Record Connections’) was similar …
insert into master.dbo.tbl_connections select @@ServerName AS Server, db.[name] [Database], getdate() [TimeStamp], Hostname, Program_name, Net_library, Loginame from master.dbo.sysdatabases db join master.dbo.sysprocesses pr on db.dbid = pr.dbid where db.dbid > 4
Final notes: To be robust and generic, I did not set-up Notifications. Also, I added a few lines to the top of the ‘CreateJob_DbaAudit.sql’ script to delete the tbl_connections table from master if it already existed.