How to find a text inside SQL Server procedures / triggers?

后端 未结 14 757
一个人的身影
一个人的身影 2020-12-04 04:48

I have a linkedserver that will change. Some procedures call the linked server like this: [10.10.100.50].dbo.SPROCEDURE_EXAMPLE. We have triggers also doing thi

14条回答
  •  [愿得一人]
    2020-12-04 05:15

    I use this one for work. leave off the []'s though in the @TEXT field, seems to want to return everything...

    SET NOCOUNT ON
    
    DECLARE @TEXT   VARCHAR(250)
    DECLARE @SQL    VARCHAR(250)
    
    SELECT  @TEXT='10.10.100.50'
    
    CREATE TABLE #results (db VARCHAR(64), objectname VARCHAR(100),xtype VARCHAR(10), definition TEXT)
    
    SELECT @TEXT as 'Search String'
    DECLARE #databases CURSOR FOR SELECT NAME FROM master..sysdatabases where dbid>4
        DECLARE @c_dbname varchar(64)   
        OPEN #databases
        FETCH #databases INTO @c_dbname   
        WHILE @@FETCH_STATUS  -1
        BEGIN
            SELECT @SQL = 'INSERT INTO #results '
            SELECT @SQL = @SQL + 'SELECT ''' + @c_dbname + ''' AS db, o.name,o.xtype,m.definition '   
            SELECT @SQL = @SQL + ' FROM '+@c_dbname+'.sys.sql_modules m '   
            SELECT @SQL = @SQL + ' INNER JOIN '+@c_dbname+'..sysobjects o ON m.object_id=o.id'   
            SELECT @SQL = @SQL + ' WHERE [definition] LIKE ''%'+@TEXT+'%'''   
            EXEC(@SQL)
            FETCH #databases INTO @c_dbname
        END
        CLOSE #databases
    DEALLOCATE #databases
    
    SELECT * FROM #results order by db, xtype, objectname
    DROP TABLE #results
    

提交回复
热议问题