sql 2000 怎么vb.net从a 主机把数据导入到B主机呢??

解决方案 »

  1.   

    1. 程序直接连接2个数据库进行数据导入
    2. SQL存储过程进行数据导入如果两个数据库在同一个服务器上,可以直接insert into tablename (列名1,列名2...) 
    select (对应列名1,对应列名2...) from [DataBaseName].dbo.tablename 
    如现在有两个数据库分别位于两个服务器上,先要建立连接服务器
    --创建链接服务器
    exec sp_addlinkedserver  'srv_lnk','','SQLOLEDB','远程服务器名或ip地址'
    exec sp_addlinkedsrvlogin 'srv_lnk','false',null,'用户名','密码'
    go
     
    --
    insert into tablename (列名1,列名2...) 
    select (对应列名1,对应列名2...) from srv_lnk.[DataBaseName].dbo.tablename  --创建链接服务器
    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 本地表 3. DTS包  (本人只是了解一点)
      

  2.   

    楼上正解.
    补充一下关于DTS导数据的情况请参考:
    http://topic.csdn.net/u/20080410/20/245013ec-7391-44fc-9595-8d8867d47784.html
      

  3.   

    我是这样连的```
    con1 = 主机1
    con2 = 主机2
    cmd1 = new sqlcommand(select * from 表 where 列= 值 ,con1  )
    con1.open()
    dtr1 = 
    if dtr1.rend() then
    cmd2 = new sqlcommand( insert 表 (dtr(列),dtr(列),.....),con2 )
    con2.open()
    .................
    报错:byte[]强制专换string出错