如题

解决方案 »

  1.   

    不同服务器数据库之间的数据操作--创建链接服务器 
    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.   

    微软网站提供了一个生成库结构,表结构,及表中数据的工具,名称叫做Microsoft SQL Server Database Publishing Wizard
      

  3.   

    如果你不是使用VS2005、没有安装SQL Server2005你可能还需要安装其它组件:
    Microsoft SQL Server Native Client  下载地址:http://download.microsoft.com/download/a/c/3/ac37a75a-1e0b-49ba-aea1-0f9b258e4965/sqlncli.msiMicrosoft SQL Server 2005 Management Objects Collection 下载地址:http://download.microsoft.com/download/f/7/4/f74cbdb1-87e2-4794-9186-e3ad6bd54b41/SQLServer2005_XMO.msi最主要的,Database Publishing Wizard,下载地址:http://download.microsoft.com/download/2/1/b/21b68714-3d9a-4610-9eba-88509ffc27fb/DatabasePublishingWizard.msi
      

  4.   

    select * into srvb.tb from srva.tb
      

  5.   

    哦   我是想把公网上的数据库的表全删除   再用这个将我内网的数据库还原上去   
    怎奈公网数据库是别人的服务器   没有还原的权限   用企业管理器又太慢了   因而想用编程实现----------------------------------------
    看起来属于DTS的范畴,
    不过,我自认为我自己写很难超过企业管理器的速度
    唯一的好处是可以自动化作业,而不必手工作业
      

  6.   

    我也想到要用 select * into 因为insert into 效率低 还不能建表
    但是 select * into table1 from table2
    因为是从内网复制数据 所以 table2的位置应该是内网表 用外网的连接字符串的时候table2是不能用openrowset访问内网数据库的
    这么说连接字符串一定要用内网连接字符串 那么table1需要用openrowset连接外网但是它提示“不存在table1”
      

  7.   

    To:jxwangjm 我看了看DTS 没怎么看懂 好想先要用企业管理器保存DTS包 是不是很麻烦 每次不同的业务 都要做dts包呢?
      

  8.   

    大家看这条语句
    select * into
    OPENDATASOURCE(
    'SQLOLEDB',
    'Data Source=ip;User ID=uid;Password=pwd'
    ).db1.user.try1 
    from try.dbo.try
    的错误:
    “在关键字 'OPENDATASOURCE' 附近有语法错误。”
    怎么改
    前提 1,连接字符串:本地;
         2,以下
    select * from
    OPENDATASOURCE(
    'SQLOLEDB',
    'Data Source=ip;User ID=uid;Password=pwd'
    ).db1.user.try 
    执行正确
      

  9.   

    1 建立远程表
    2 insert into t select * from ..
      

  10.   

    to zefuzhang2008 :
    鉴于insert into效率太低,对于数据添加还行,备份还原数据库就不太好了
    我不想建表和复制数据分开完成 看看实在不行就算了
      

  11.   

    直接用dts.然后选择在sqlsever间复制对象和数据.
      

  12.   

    to:fcuandy 
    你是说dtswiz.exe把 我是觉的每次都弄太浪费时间才选择sql语句实现的
      

  13.   

    这个功能好像没有用sql语句实现的,如果数据量大的话,会很慢的。
    建议直接的恢复数据库。(没有权限要呀)
      

  14.   

    DTS除了可以用SQL语句操作外,也可以用VB等语言操作
    在企业管理器中用企业管理器选择保存为Visual Basic File,可以得到一个.Bas文件
    如果你是用VB的,那么看一下就应该知道了
    如果不是用VB的,那主要是通过调用dtspkg.dll
    其实俺也没用过