Is there a way to find out when a stored procedure was last updated?
Simple answer is 'No'. The crdate column in the sysobjects table always contains the stored procedure create date, not the last updated date. You can use Profiler to trace ALTER PROC calls to the database, but you can't really afford to run a trace for ever, as it's resource intensive. Here is a simple idea! Whenever you have to alter your stored procedure, first drop it, then recreate it with the updated code. This resets the crdate column of sysobjects table. If you can make sure your developers always follow this plan, then the crdate column of sysobjects will always reflect the last updated date of the stored procedure. For example, if I have to modify a procedure named MyProc, instead of doing "ALTER PROC MyProc", here's what I would do:
- Use sp_helptext to get the current code of MyProc. - Change the code as needed. - Run the following code to drop the existing version of MyProc:
IF EXISTS(SELECT 1 FROM sysobjects WHERE name = 'MyProc' AND type = 'P' AND USER_NAME(uid) = 'dbo') BEGIN DROP PROC dbo.MyProc END
- Run the updated code to recreate MyProc
There is a much more powerful way out, if you can use Visual Source Safe (VSS). VSS is a version control software, that lets you manage your code. With VSS in place, you will have to maintain all your object creation scripts as script files and check them into VSS. When you have to modify a particular stored procedure, check out that script from VSS, modify it, test it, create the stored procedure, and check the script back into VSS. VSS can show you when a script got modified, by who and a whole lot of other information.
Advantages of using VSS - You can version control your software, as VSS maintains all your changes as different versions - You can go back to a previous known good version of your stored procedure, if a developer makes a mistake - Using the labelling feature, you can revert back to an entire set of scripts at a particular point in time - You can control access to your source code by configuring permissions to your developers - By maintaining backups of VSS database, you can secure all your code centrally, instead of worrying about individual script files