select * from  表 where 字段 like '%adsfsfd%'

解决方案 »

  1.   

    你用sql server profiler跟一下在哪个语句出错的不就ok了?
      

  2.   


    --搜索所有库表的某个值 
    --创建过程,参数是你要查询的字符串
    create proc proc_selectall
    @s varchar(50)--你的关键字
    as
    begin
    declare @sql varchar(8000),@where varchar(8000)
    declare cursor_tb cursor for
    select name from sysobjects where xtype='u'
    declare @name varchar(50)
    open cursor_tb
    fetch next from cursor_tb
    into @name
    while @@FETCH_STATUS = 0
    begin
    select @sql=isnull(@sql+' or ','')+'ltrim(['+name+'])='''+@s+''''
    from syscolumns where id=object_id(@name)
    set @where=replace(@sql,'''','''''')
    exec('if exists(select 1 from ['+@name+'] where '+@sql+') exec(''select * from ['+@name+'] where '+@where+''')')
    select @sql=null
    fetch next from cursor_tb
    into @name
    end
    close cursor_tb
    deallocate cursor_tb
    end
    go 
    --举例
    if object_id('tb') is not null
    drop table tb
    if object_id('ta')is not null
    drop table ta
    go
    create table tb(s varchar(50))
    insert into tb select 'abc'
    create table ta(s varchar(50))
    insert into ta select 'abc'
    go
    exec proc_selectall 'abc'
      

  3.   

    SQL SERVER PROFILER 跟踪出错的语句,就知道是哪个表了,也知道是哪个字段了,蠢!!!!
      

  4.   


    declare @str varchar(100)
    set @str='adsfsfd'  --要搜索的字符串declare @s varchar(8000)
    declare tb cursor local for
    select s='if exists(select 1 from ['+b.name+'] where ['+a.name+'] like ''%'+@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.xusertype in(175,239,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--如果能查询到它所在表和它所在字段,构造更新语句就很方便了.
      

  5.   

    如果重复的信息是关键字段,可以给表加上主键。这样如果下次插入重复记录,SQL Server就会报错了。
      

  6.   

    我确实很弱,连sql server profiler都不知道,我确实很弱,连个像样的存储过程都写不出来。谢谢大家的帮助,因为这是个成型的系统,我没有相关文档,只能自己慢慢摸索。还是感谢大家。
      

  7.   

    select cast('asdf' as varbinary)
    然后打开ultra edit去查61736466
      

  8.   

    exec('if exists(select 1 from ['+@name+'] where '+@sql+') exec(''select * from ['+@name+'] where '+@where+''')')
    比如这个嵌套exec中的红色部分。