--先说说你要存取的数据库的环境,多个,服务器在同一个不?!
mssql 2k+xp  
是两个服务器
这个存储过程的功能就是同步服务器和本地数据库中表的结构
@dbhost  服务器名+数据库名
@tbhost  服务器表
@dblocal 本地数据库名称
@tblocal 本地表

解决方案 »

  1.   

    '+@dbhost+'.[dbo].[systypes] b 你如果是从登陆的服务器跨到别的服务器操作,不能想跨库那样指定:库名.dbo.表名你用openrowset:
    例子:
    declare @value as varchar(10)
    set @value  = 'xxx'--变量值
    select A.* from aa A --这个是本地表
    inner join (select * from openrowset('sqloledb','B';'misa';'**','select * from B.dbo.bb) as B --另外一个服务器的表
    on A.a = B.b2.opendatasource
    insert into table A--这个是本地表
    select * from opendatasource('sqloledb','data source=svr_link;user ID=develop;Password=11111').new_ks.dbo.表B --另外一个服务器的表
      

  2.   

    --你如果是从登陆的服务器跨到别的服务器操作,不能想跨库那样指定:库名.dbo.表名
    用server.db.dbo.tb 可以的
    我用了sp_addlinkedserver 和sp_addlinkedsrvlogin 两个sp的 
    select * from [192.168.1.104].qxt.dbo.sendmsg 可以成功
    在查询分析器中 exec pcompare [192.168.1.104].qxt','user_info','[sai]','sendmsg' 是可以成功的但调试 以及外部调用的时候就会出现错误