本例脚本旨在所有数据库的所有数据中搜索关键字,可将以下脚本直接拷贝使用,注意留意注解。本例的核心思路是用游标遍历所有数据库中所有表的所有列,用列名对关键字进行匹配,对匹配结果进行判断,然后只输出有关键字的信息。

  在本例中,关掉了影响行数的信息,在查询结果的massage栏中,会出现一些Level 16的warning信息,大部分都是因为搜索到某些特殊数据类型的字段(XML,sql_variant,image等),不能用convert函数转换为varchar类型,此报警信息可以忽略~

  如:Implicit conversion from data type xml to varchar is not allowed. Use the CONVERT function to run this query.

  或者是出现了排序规则不一致的信息,比如在英文环境下,某些字段名是中文等 :

  如:Invalid column name '?????'.

  在使用此脚本的过程中,可以留意到脚本中有print函数被注释了,如果需要观察SQL动态语句最后的真实形态,可以重新启用print函数来比对。

drop table #Retrieve
set nocount on
Declare @UserDB varchar(200)
declare @str varchar(200)
set @str='AmazonHostReservat' --your string to be retrieved将@str的值换成要查的字符串!
create table #Retrieve(Retrieve_Info varchar(200))

Declare DBName cursor
            for
select name from sys.databases where name not in
                                                          (N'master', N'model', N'msdb', N'tempdb', N'distribution', N'DWDiagnostics', N'DWConfiguration', N'DWQueue', N'resource',N'ReportServer',N'ReportServerTempDB')

--Note:若可以明确所查关键字在哪个数据库(比如A)中,可以将上一行where name not in
--(N'master', N'model', N'msdb', N'tempdb', N'distribution', N'DWDiagnostics', N'DWConfiguration', N'DWQueue', --N'resource',N'ReportServer',N'ReportServerTempDB')改为where name in ('A')

open DBName;
fetch next from DBName into @UserDB;
while @@FETCH_STATUS=0
begin
    Declare @column_sql varchar(1000)
    set @column_sql=
    'DECLARE columnCursor CURSOR FOR SELECT ''['' + table_catalog + ''].['' + table_schema + ''].['' +
     table_name + '']'' as tableName,''['' + table_catalog + ''].['' + table_schema + ''].['' +
     table_name + ''].['' + column_name + '']'' as columnName FROM [' + @UserDB + '].INFORMATION_SCHEMA.columns a
     where a.table_NAME in (select name from '+quotename(@UserDB,'[]')+'.sys.tables) and a.table_NAME <>'+'''sysdiagrams'''
    --print(@column_sql)
    exec(@column_sql)
    declare @Column_name varchar(500)
    declare @tablename varchar(500)
    open columnCursor
    fetch next from columnCursor into @tablename,@Column_name;
    while @@FETCH_STATUS=0
        begin
        declare @retrieve varchar(1000)
        declare @retrieve2 varchar(1000)
        declare @count int
        set @retrieve='declare @rowcount int;
        select '+@Column_name+' from '+@tablename+' where quotename(convert(varchar(200),'+@Column_name+'),'''') like '+QUOTENAME('%'+@str+'%','''')
        --print (@retrieve)
        insert into #Retrieve exec (@retrieve)
        select @count=count(1) from #Retrieve
        if @count>0
        begin
            set @retrieve2='select '+quotename(@tablename,'''')+' as Tablename , * from '+@tablename+' where quotename(convert(varchar(200),'+@Column_name+'),'''') like '+QUOTENAME('%'+@str+'%','''')
            --print (@retrieve2)
            exec (@retrieve2)
            delete from #Retrieve  
            fetch next from columnCursor into @tablename,@Column_name;
        end        
        else            
        fetch next from columnCursor into @tablename,@Column_name;
        end
        close columnCursor
        DEALLOCATE columnCursor
    fetch next from DBName into @UserDB;
end
        close DBName
        DEALLOCATE DBName
set nocount off

转载于:https://www.cnblogs.com/LC0507/p/11456003.html

在所有数据库的所有数据中搜索关键字相关推荐

  1. Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置

    Linux,grep命令,在大日志文件中搜索关键字 最后/最开始出现位置 grep [选项]... PATTERN [FILE]... grep -C N,(N代表一个整数)是搜索关键字出现位置,并且 ...

  2. 在EXCEL中搜索关键字

    在EXCEL中搜索关键字 /* 打开EXCEL文件,按关键字判断是否符合 参数:strFileTable 文件数组列表 */function fu_FindExcel(strFileTable){va ...

  3. Jquery在表格中搜索关键字

    Jquery在表格中搜索关键字 <!DOCTYPE html> <html> <head> <title>ddd</title> </ ...

  4. linux vim 搜索关键词,在Vim/Vi中搜索关键字就这么简单

    原标题:在Vim/Vi中搜索关键字就这么简单 本文描述了如何在Vim / Vi中执行搜索操作. Vim或其前身Vi预装在macOS和大多数Linux发行版上.搜索文本是处理文件时最常见的任务之一.当您 ...

  5. php文件里搜索关键字,php - PHP从文本文件中搜索关键字(Action'),使用该关键字打印所有行,然后计算打印的行数 - SO中文参考 - www.soinside.com...

    所以我刚开始学习PHP,我想从文本文件中搜索某个关键字(Action'),然后用关键字打印所有行,然后计算所有打印的行. 这是我到目前为止所拥有的: $searchfor = 'ERR:'; echo ...

  6. php mysql搜索包含数据查询慢,php – 在mysql中搜索关键字并获取至少包含5个关键字的数据...

    首先将图像的所有关键字都添加到您想要搜索的内容中,就像您点击关键字为的图像一样: $keywords = "good,beautiful,nice,weather"; 现在添加循环 ...

  7. 1为数据库查询的数据中加一排序号,2判断为查询出来的字段赋值

    @Overridepublic String getSqlByFileCodeForExport(String strTime, String strCompany) {StringBuffer st ...

  8. linux查询关键词上下行_Linux:从文件中搜索关键字并显示行数(cat,grep函数)

    学点HTTP知识 不学无术 又一次感觉到不学无术,被人一问Http知识尽然一点也没答上来,丢人丢到家了啊.平时也看许多的技术文章,为什么到了关键时刻就答不上来呢? 确实发现一个问题,光看是没有用的,需 ...

  9. ubuntu在目录下文件中搜索关键字

    find ./ -name "ETC_tollEx*"  | xargs grep "黑NK0573" 在以./目录下查找以ETC_tollEx开头的文件中,包 ...

最新文章

  1. Linux strace 跟踪进程信息
  2. windows server2012
  3. Ubuntu 14.04 登陆界面循环问题解决
  4. ./configure,make,make install的作用
  5. strcpy和strcmp——调用库函数快速操作字符数组
  6. 自动抢红包,自动安装原理之AccessibilityService
  7. 上升沿_输入输出的上升沿和下降沿是怎么来的,一起看看
  8. 上海工程技术大学计算机通信与网络,上海工程技术大学
  9. 删除Linux上的用户
  10. 从贝叶斯方法谈到贝叶斯网络
  11. 三步删除U深度,老毛桃,大白菜捆绑软件!!
  12. 麦肯锡 “金字塔原理”:职场人结构化思维、表达和解决问题的利器
  13. CodeIgniter安装和入门使用(一)
  14. 3225 十进制到六进制
  15. 时间戳和时间字符串互转
  16. STC89C52RC定时器2串口通信
  17. Python PyAutoGUI和Pywinauto区别及安装
  18. 如何将明细数据关联对照表后生成汇总统计表
  19. 从《乔布斯传》里得到的20条经验和教训
  20. 中国公司债券第一单07长电公司债周一正式发行

热门文章

  1. 【ketlle】本地开发kitlle job提交至linux生产环境上执行流程
  2. mysql 42000 报错_MySQL SQL Error: 1064, SQLState: 42000 错误
  3. 站长还应该发布外链吗?
  4. 武汉理工大学计算机考研考纲,2018年武汉理工大学825流体力学考试大纲
  5. MapGis 二次开发 常见问题 转
  6. [译]5步分析pdf文件
  7. 使用Windows驱动的虚拟打印机,打印Excel表格无表格线问题解决(1)
  8. 关于“Windows Script Host...”错误
  9. jdk常用工具命令总结
  10. DirectShow使用大全