在整个数据库中检索一个字符串的存储位置

--******************************************************************************
--遍历整个数据库,查找包含某个字符串存储的表和字段有哪些
     -----------------
     use UFTData228779_000001                                                                                                 --变量1:执行的数据库名
     -----------------
     IF (EXISTS(SELECT * FROM sysobjects WHERE name='SP_FindValueInDB' AND type='P')) --变量2:存储过程名
     DROP PROCEDURE SP_FindValueInDB                                                                                 --变量2:存储过程名
     go
     -----------------
     CREATE PROCEDURE [dbo].[SP_FindValueInDB]                                                                  --变量2:存储过程名
        (
          @value VARCHAR(1024)
        ) 
     AS
     BEGIN
          SET NOCOUNT ON;
          DECLARE @sql VARCHAR(1024) 
          DECLARE @table VARCHAR(200) 
          DECLARE @column VARCHAR(200) 
          CREATE TABLE #t ( 
               tablename VARCHAR(200), 
               columnname VARCHAR(200) 
           ) 
          DECLARE TABLES CURSOR FOR 
          SELECT o.name, c.name FROM syscolumns c 
          INNER JOIN sysobjects o ON c.id = o.id 
          WHERE o.type = 'U' AND c.xtype IN (167, 175, 231, 239) 
          ORDER BY o.name, c.name 
          OPEN TABLES 
                FETCH NEXT FROM TABLES 
                INTO @table, @column 
                WHILE @@FETCH_STATUS = 0 
                BEGIN 
                     SET @sql = 'IF EXISTS(SELECT NULL FROM [' + @table + '] ' 
                     ---------------------------------这里采用包含查询,可以根据实际情况,设置为等于或其他
                     SET @sql = @sql + 'WHERE RTRIM(LTRIM([' + @column + '])) LIKE ''%' + @value + '%'') ' 
                     SET @sql = @sql + 'INSERT INTO #t VALUES (''' + @table + ''', ''' 
                     SET @sql = @sql + @column + ''')' 
                     EXEC(@sql) 
                     FETCH NEXT FROM TABLES 
                     INTO @table, @column 
                END 
           CLOSE TABLES 
           DEALLOCATE TABLES 
           SELECT * FROM #t 
           DROP TABLE #t 
     End
     go
     -----------------
     EXEC  SP_FindValueInDB '档案'                                                                                       --变量3:填写要查询的字符串
     -----------------
     --select  name ,* from Eap_ViewModule
--************************************************************************************
                ///有时候在没有数据字典的情况下,我们要检索一个字符串,一般使用事件探查器追踪的方法
                ///这里介绍一个整库检索的方法,也可以参考一下,
高清图片查看方法:点击图片---右键---在新标签页中打开图片(或全屏看图)

--------------------------------