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

--******************************************************************************

--遍历整个数据库,查找包含某个字符串存储的表和字段有哪些

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

     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

--************************************************************************************

                ///有时候在没有数据字典的情况下,我们要检索一个字符串,一般使用事件探查器追踪的方法
                ///这里介绍一个整库检索的方法,也可以参考一下,
高清图片查看方法:点击图片---右键---在新标签页中打开图片(或全屏看图)

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