设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1226|回复: 0

SQL Server全库搜索

[复制链接]

38

主题

328

金钱

536

积分

初级用户

发表于 2019-6-12 13:31:28 | 显示全部楼层 |阅读模式

SQL Server全库搜索(在所有表中查找内容)

SQL Server版本:SQL Server2008
某个内容到底存储在数据库的哪个地方?无从下手时,可以使用全库查找。
SQL Server在整个库的所有表的所有字段中查找内容,用到了临时表,游标循环。
  1. declare @Str nvarchar(max), @tableName varchar(50), @colName varchar(50), @rowCount int

  2. select a.name tableName, b.name Colname, 0 as IsFound into #t1
  3. from sysobjects a join syscolumns b on a.id=b.id join systypes c on b.xtype=c.xtype
  4. where a.[type]=‘U‘ and c.name in (‘varchar‘, ‘nvarchar‘, ‘char‘, ‘nchar‘) --这里是设置字段的类型,以缩小范围

  5. declare _c1 cursor for select Colname, tableName from #t1
  6. open _c1
  7. fetch next from _c1 into @colName, @tableName
  8. while @@FETCH_STATUS=0 begin
  9. --print @Str
  10. select @Str=‘select @rowCount=count(1) from [‘+@tableName+‘] where [‘+@colName+‘] like ‘‘%TotalDsc%‘‘‘ --这里是要查找的内容
  11. exec sp_executesql @Str, N‘@rowCount int output‘, @rowCount output
  12. if @rowCount>0 update #t1 set IsFound=1 where ColName=@colName and tableName=@tableName
  13. fetch next from _c1 into @colName, @tableName
  14. end
  15. close _c1
  16. deallocate _c1
  17. select * from #t1 where IsFound=1
  18. drop table #t1
复制代码

搜索出来的结果解释:
tableName:表名
Colname:列名
IsFound:找到的个数
再也不怕找不到在数据库的哪个地方了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表