How do I find all stored procedures that insert, update, or delete records?

后端 未结 3 2117
名媛妹妹
名媛妹妹 2020-12-03 19:14

Is it possible, without parsing source, to select a list of all sproc names that insert, update, or delete records? I need to create a TSQL utility script that will do this.

3条回答
  •  北荒
    北荒 (楼主)
    2020-12-03 19:59

    Call sp_refreshsqlmodule on all non-schema bound stored procedures:

    DECLARE @template AS varchar(max)
    SET @template = 'PRINT ''{OBJECT_NAME}''
    EXEC sp_refreshsqlmodule ''{OBJECT_NAME}''
    
    '
    
    DECLARE @sql AS varchar(max)
    
    SELECT  @sql = ISNULL(@sql, '') + REPLACE(@template, '{OBJECT_NAME}',
                                              QUOTENAME(ROUTINE_SCHEMA) + '.'
                                              + QUOTENAME(ROUTINE_NAME))
    FROM    INFORMATION_SCHEMA.ROUTINES
    WHERE   OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.'
                                     + QUOTENAME(ROUTINE_NAME)),
                           N'IsSchemaBound') IS NULL
            OR OBJECTPROPERTY(OBJECT_ID(QUOTENAME(ROUTINE_SCHEMA) + '.'
                                        + QUOTENAME(ROUTINE_NAME)),
                              N'IsSchemaBound') = 0
    
            EXEC (
                  @sql
                )
    

提交回复
热议问题