List of Stored Procedure from Table

后端 未结 7 681
隐瞒了意图╮
隐瞒了意图╮ 2020-12-03 18:50

I have a huge database with 100\'s of tables and stored procedures. Using SQL Server 2005, how can I get a list of stored procedures that are doing an insert or update opera

相关标签:
7条回答
  • Use sys.dm_sql_referencing_entities

    Note that sp_depends is obsoleted.

    MSDN Reference

    0 讨论(0)
  • 2020-12-03 19:22
    select
      so.name,
      sc.text
    from
      sysobjects so inner join syscomments sc on so.id = sc.id
    where
      sc.text like '%INSERT INTO xyz%'
      or sc.text like '%UPDATE xyz%'
    

    This will give you a list of all stored procedure contents with INSERT or UPDATE in them for a particular table (you can obviously tweak the query to suit). Also longer procedures will be broken across multiple rows in the returned recordset so you may need to do a bit of manual sifting through the results.

    Edit: Tweaked query to return SP name as well. Also, note the above query will return any UDFs as well as SPs.

    0 讨论(0)
  • 2020-12-03 19:26

    You could try exporting all of your stored procedures into a text file and then use a simple search.

    A more advanced technique would be to use a regexp search to find all SELECT FROM and INSERT FROM entries.

    0 讨论(0)
  • SELECT Distinct SO.Name
    FROM sysobjects SO (NOLOCK)
    INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
    AND SO.Type = 'P'
    AND (SC.Text LIKE '%UPDATE%' OR SC.Text LIKE '%INSERT%')
    ORDER BY SO.Name
    

    This link was used as a resource for the SP search.

    0 讨论(0)
  • 2020-12-03 19:29

    If you download sp_search_code from Vyaskn's website it will allow you to find any text within your database objects.

    http://vyaskn.tripod.com/sql_server_search_stored_procedure_code.htm

    0 讨论(0)
  • 2020-12-03 19:37

    This seems to work:

    select
    so.name as [proc],
    so2.name as [table],
    sd.is_updated
    from sysobjects so
    inner join sys.sql_dependencies sd on so.id = sd.object_id
    inner join sysobjects so2 on sd.referenced_major_id = so2.id
    where so.xtype = 'p' -- procedure
    and is_updated = 1 -- proc updates table, or at least, I think that's what this means

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