本帖最后由 postcha 于 2010-04-26 12:02:37 编辑

解决方案 »

  1.   

    --2.用下面的链接后或在B注册a后,然后:update table2
    set shu = n.shu
    from b.b1.dbo.table2 m, a.a1.dbo.table 
    where m.id = n.id不同服务器数据库之间的数据操作--创建链接服务器 
    exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
    exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' --查询示例 
    select * from ITSV.数据库名.dbo.表名 --导入示例 
    select * into 表 from ITSV.数据库名.dbo.表名 --以后不再使用时删除链接服务器 
    exec sp_dropserver 'ITSV' , 'droplogins' --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    --1、openrowset --查询示例 
    select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --生成本地表 
    select * into 表 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) --把本地表导入远程表 
    insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) 
    select *from 本地表 --更新本地表 
    update b 
    set b.列A=a.列A 
    from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b 
    on a.column1 = b.column1 --openquery用法需要创建一个连接 --首先创建一个连接创建链接服务器 
    exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
    --查询 
    select * 
    FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    --把本地表导入远程表 
    insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    select * from 本地表 
    --更新本地表 
    update b 
    set b.列B=a.列B 
    FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a 
    inner join 本地表 b on a.列A=b.列A --3、opendatasource/openrowset 
    SELECT * 
    FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta 
    --把本地表导入远程表 
    insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名 
    select * from 本地表 
      

  2.   

    --1http://topic.csdn.net/u/20100426/11/0c3540ae-c6d5-4ec8-95ea-081fff8fa088.html?22511
      

  3.   


    create   procedure   p_replacentext(@vTable   varchar(50),   @vField   varchar(30),@vBefore   varchar(8000),@vAfter   varchar(8000)) 
    as 
    begin 
        Declare   @Sql   nvarchar(4000) 
        declare   @p_s   varchar(800) 
        Declare   @p   binary(16),@postion       int,@rplen       int       
        set   @Sql=N 'Select     @p=textptr( '+@vField+ '),@rplen=len( ' ' '+@vBefore+ ' ' '),@postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1   from   '+@vTable       
        exec   sp_executesql   @Sql,N '@p   binary(16)   output,@rplen   int   output,@postion   int   output   ',@p   output,@rplen   output,@postion   output 
        while   @postion   > =   0 
        begin       
              exec   master.dbo.xp_varbintohexstr   @p,   @p_s   out 
              set   @Sql=N 'updatetext   '+@vTable+ '. '+@vField+ '   '+@p_s+ '   '+cast(@postion   as   varchar(8))+ '   '+cast(@rplen   as   varchar(4))+ '   ' ' '+@vAfter+ ' ' ' ' 
              print   @Sql   
              exec(@Sql) 
              set   @Sql=N 'select   @postion=patindex( ' '% '+@vBefore+ '% ' ', '+@vField+ ')-1     from   '+@vTable     
              exec   sp_executesql   @Sql,N '@postion   int   output   ',@postion   output 
        end 
    end     --------- 
    create     TABLE   t(col1   char(1000),   col2   ntext) 
    INSERT   t   SELECT   ' ',   'aa北京中华人民共和国北京天安门北京asdsdf '+REPLICATE( 'a ',   8000) 
    select   *   from   t 
    exec   p_replacentext   't ', 'col2 ', '北京 ', '首都 '   
    select   *   from   t 
    drop   table   t 
    --结果 
    aa北京中华人民共和国北京天安门北京asdsdfaaaa...aa首都中华人民共和国首都天安门首都asdsdfaaaaa...