如何全库搜索某一字符串?

if   exists   (select   *   from   dbo.sysobjects   where   id   =   object_id(N'[dbo].[p_search]')   and   OBJECTPROPERTY(id,   N'IsProcedure')   =   1)  
  drop   procedure   [dbo].[p_search]  
  GO  
   
  /*--搜索某个字符串在那个表的那个字段中   
      
    
  /*--调用示例  
  use   pubs  
  exec   p_search   N ' 搜索字符 '  
  --*/  
  create   proc   p_search  
  @str   Nvarchar(1000)   --要搜索的字符串  
  as  
  if   @str=''   return  
   
  declare   @s   Nvarchar(4000)  
  create   table   #t(表名   sysname,字段名   sysname)  
   
  declare   tb   cursor   local   for  
  select   s='if   exists(select   1   from   ['+replace(b.name,']',']]')+']   where   ['+a.name+']   like   N''%'+@str+'%'')  
  print   ''所在的表及字段:   ['+b.name+'].['+a.name+']'''  
  from   syscolumns   a   join   sysobjects   b   on   a.id=b.id  
  where   b.xtype='U'   and   a.status>=0  
  and   a.xtype   in(175,239,99,35,231,167)  
  open   tb  
  fetch   next   from   tb   into   @s  
  while   @@fetch_status=0  
  begin  
  exec(@s)  
  fetch   next   from   tb   into   @s  
  end  
  close   tb  
  deallocate   tb  
   
  /*--测试结果  
   
  所在的表及字段:   [authors].[au_lname]  
   
  --*/
posted @ 2008-05-22 19:43  大牛博客  阅读(365)  评论(0编辑  收藏  举报