搜索sql server中的所有表和所有列

我们平时做调查的时候,经常会疑惑某个数据到底是从哪来的,往往使用事件查看器之类的捕捉sql来找,其实我们也可以用下边这条sql试试。不过在数据量大的时候确实是比较慢。

 

drop table #
declare @t  varchar(255),@c  varchar(255)
create table # (name varchar(256),cols varchar(4000))
declare  table_cursor  cursor  for 
select  a.name,b.name  from  sysobjects  a,syscolumns  b 
where  a.id=b.id  and  a.xtype='U' and b.xtype in (35,99,167,175,231,239)

--上边这几个数字是我从sys.types查出来的,限制了只搜索文本类型,具体使用的时候可以自行修改
open  table_cursor  fetch  next  from  table_cursor 
into  @t,@c 
while(@@fetch_status=0)
begin 
    exec('
set nocount on
if exists(select top 1 '+@c+' from [' + @t + '] where [' + @c + '] like ''%lond%''
    begin
        if not exists(select 1 from # where name='''+@t+''')
            insert into # select '''+@t+''','''+@c+'''
        else
            update # set cols=cols+'','+@c+''' where name='''+@t+'''
    end   
    ')
    fetch  next  from  table_cursor  into  @t,@c 
end
close  table_cursor  deallocate  table_cursor;
select * from #

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值