How to Find the list of Stored Procedures which affect a particular column?

后端 未结 5 963
心在旅途
心在旅途 2021-01-12 05:48

Im working on this large DB which has a lot of the business knowledge embedded in the SPs[I know!] and there is a lot of chaining between the SPs. i.e one stored proc callin

相关标签:
5条回答
  • 2021-01-12 06:09
    use msdb
    go
    select * from sysjobs j
    inner join sysjobsteps s
    on j.job_id=s.job_id
    where command like '%HBR_INSTRUMENT%'
    
    0 讨论(0)
  • 2021-01-12 06:13

    Have you tried this : EXEC sp_depends @objname = [table name of the column you are interested in].

    So for example, if you had a column named Price in a table named Product, you would execute this: EXEC sp_depends @objname = N'Product'.

    Simply executing this would give you list of all sps, views, etc which depend on that particular table.

    I use this all the time as I work with a db which has over 400 tables :-)

    sp_depends page on MSDN

    0 讨论(0)
  • 2021-01-12 06:14

    From system view sys.sql_dependencies you can get dependencies at column level.

    DECLARE @Schema SYSNAME
    DECLARE @Table SYSNAME
    DECLARE @Column SYSNAME
    
    SET @Schema = 'dbo'
    SET @Table = 'TableName'
    SET @Column = 'ColumnName'
    
    SELECT o.name
    FROM sys.sql_dependencies AS d
      INNER JOIN sys.all_objects AS o ON o.object_id = d.object_id
      INNER JOIN sys.all_objects AS ro ON ro.object_id = d.referenced_major_id
      INNER JOIN sys.all_columns AS c ON c.object_id = ro.object_id AND c.column_id = d.referenced_minor_id
    WHERE (SCHEMA_NAME(ro.schema_id)=@Schema) 
      and o.type_desc = 'SQL_STORED_PROCEDURE'
      and ro.name = @Table
      and c.name = @Column
    GROUP BY o.name
    
    0 讨论(0)
  • 2021-01-12 06:25

    Here's one that works in SQL 2000+; Note that as Andrew noted in his, you will get false positives depending on your column name, but it's a starting place:

    SELECT DISTINCT o.Name
    FROM syscomments c
        JOIN sysobjects o ON c.ID = o.ID
    WHERE c.Text LIKE '%ColumnName%'
    ORDER BY o.Name
    
    0 讨论(0)
  • 2021-01-12 06:29

    Try something like this:

    use YourDatabase;
    
    select [Name]    
    from sys.procedures
    where object_definition([object_id]) like '%YourColumnName%';
    

    Obviously this has the potential to generate a lot of false positives depending on what the column is named but at least you will have a list of procedures to sift through.

    0 讨论(0)
提交回复
热议问题