SQL Server Impact Analysis Query


Ugh. Impact analysis is one my least favorite tasks. And despite the fact it’s gotten easier over the years with the addition of being able to check object dependencies natively within SQL Server Management Studio, I still find myself resorting to wildcard searches of object definitions for various reasons. (For example: dependencies on objects accessed via linked server, hardcoded values, etc.). Back in SQL Server 2000, these types of searches were performed against the syscomments table. In SQL Server 2005 and 2008 we have the new view sys.sql_modules to query.  This eliminates the minor risk with syscomments that in a longer definition (over 4,000 characters) a particular  search string could be split across two rows, either preventing it from showing up in a search or requiring some fancy coding (see this forum post on SQL Server Central).

Here’s the query I use to check sql_modules.

-- http://www.sqldbpros.com
SELECT  OBJECTPROPERTYEX(sm.object_id, 'basetype') AS ObjectType
      , OBJECT_SCHEMA_NAME(sm.object_id) AS schemaName
      , OBJECT_NAME(sm.object_id) AS ObjectName
FROM    sys.sql_modules AS sm
WHERE   OBJECTPROPERTY(sm.object_id, 'IsMSShipped') = 0 --exclude system objects
        AND sm.definition LIKE '%employeeID%'

This will return results similar to the following:

SQL server Impact Analysis

Just a reminder: if the string you’re looking for contains an underscore aka “_” don’t forget that SQL Server considers an underscore a wildcard character! You can “escape” this functionality by following the directions in our post Escaping From An Underscore In A SQL Server Wildcard / LIKE Search


Leave a Reply

Your email address will not be published.