摘自大力:
select * into 本地库名..表名 from OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=远程ip;User ID=sa;Password=密码'
         ).库名.dbo.表名insert 本地库名..表名 select * from OPENDATASOURCE(
         'SQLOLEDB',
         'Data Source=远程ip;User ID=sa;Password=密码'
         ).库名.dbo.表名或使用联结服务器:
EXEC sp_addlinkedserver 
   '别名', 
   '', 
   'MSDASQL',
   NULL,
   NULL,
   'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
GO
然后你就可以如下:
select * from 别名.库名.dbo.表名
insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
go

解决方案 »

  1.   

    select * into 本地库名..表名 from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名insert 本地库名..表名 select * from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名或使用联结服务器:
    EXEC sp_addlinkedserver 
       '别名', 
       '', 
       'MSDASQL',
       NULL,
       NULL,
       'DRIVER={SQL Server};SERVER=远程名;UID=用户;PWD=密码;'
    GO
    然后你就可以如下:
    select * from 别名.库名.dbo.表名
    insert 库名.dbo.表名 select * from 别名.库名.dbo.表名
    select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
    go
      

  2.   

    exec sp_addlinkedserver  @server =  '192.168.2.44'
    exec sp_addlinkedsrvlogin @rmtsrvname =  '192.168.2.44',
         @useself =  false ,
         @locallogin = 'sa',  
         @rmtuser =  'sa' ,
         @rmtpassword =  null
    直接用Sql语句传输数据
    select * from [192.168.2.44].zlsgl.dbo.t_cby  update [192.168.2.44].zlsgl.dbo.t_cby set xm = rtrim(xm) + '1' where bh = 4
      

  3.   

    我up,在sql server中可以的哦。小弟我在sybase 中就办法实现呀!
      

  4.   

    多谢楼上的各位 ,但表的结构不一样,字段名称也不一样..
    select C1,C2,C3,C4 from 别名.Database1.dbo.Table1
    insert Database2.dbo.Table2 select C1,C2,C3,C4 from 别名.Database1.dbo.Table1
    我只是提取了Table1的部分字段,对Table2部分更新
    ///select * into 库名.dbo.新表名 from 别名.库名.dbo.表名
    上面的还有字段之间的转换,要怎么做呢?谢谢!
      

  5.   

    只要连接了别的服务器的数据库,用起来就和本地库一样啊,用cast/convert都可以
      

  6.   

    程序的设计只是要求在需要的时候能把Table1中的某一条记录的一些字段值传送到Table2并保存..所以不能用cast/convert。
      

  7.   

    不行啊,错误信息
    服务器: 消息 8101,级别 16,状态 1,行 6
    仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'Database2.Table2
    ' 中为标识列指定显式值。
      

  8.   

    大力: 底下两个语句的区别
    select * into 本地库名..表名 from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名insert 本地库名..表名 select * from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名select * into .....可以在没建立新表的情况下,把目前数据库表复制过来。
    而insert into  .... select .... 必须先建立表才能复制。
    我是菜鸟 有疑问就提了。对不住楼主啦。
      

  9.   

    select cast(你的字段名 as int) as 新字段名 into 库名.dbo.新表名 from 别名.库名.dbo.表名
      

  10.   

    select * into 本地库名..表名 from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名-----------------上面的是建新表,下面的是对已有的表追加数据insert 本地库名..表名 select * from OPENDATASOURCE(
             'SQLOLEDB',
             'Data Source=远程ip;User ID=sa;Password=密码'
             ).库名.dbo.表名
      

  11.   

    不行啊,错误信息
    服务器: 消息 8101,级别 16,状态 1,行 6
    仅当使用了列的列表,并且 IDENTITY_INSERT 为 ON 时,才能在表 'Database2.Table2
    ' 中为标识列指定显式值。
    --------------------------------------------
    是应为你的表有标识(自增)列如编号你可以  insert 表 (除了标识列外的列) select (与前面对应的列)......如果你能保证标识列的数据与新的数据不重复:
    插入标识列值
    SET IDENTITY_INSERT  表  ON
     insert 表 select *......
    SET IDENTITY_INSERT  表  OFF