热搜词
发表于 2007-12-9 11:39:40 | 显示全部楼层 |阅读模式
1.没有防火墙,同一个局域网里或不在同一个局域网里,但通过Internet可以互相访问

  在SQL Server企业管理器里选中目的数据库 ,按鼠标右键,选所有任务->导入数据->
  弹出数据转换服务导入/导出向导窗口->下一步->
   
  选数据源-> 数据源(用于SQL Server的Microfost OLE DB提供程序)->
    服务器(可选择局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->
    选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->
    数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->
   
  选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->
    服务器(默认为上一步里选中的导出服务器,也可以选其它局域网内能访问到的所有SQL Server服务器,或者直接输入IP地址)->  
    目的数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->
   
  制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->
    选择源表和视图->在要导入的表和视图前面选中源->目的出现同样的表名(可以手工修改成别的表名)->
    转换->列映射和转换里面可以修改源表和目的表之间字段的对应关系,修改目的表字段的类型和长度等,
    并可以选择创建目的表,在目的表中增加行,除去并重新创建目的表,启用标志插入等选项->确定->下一步->
   
  保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出导入数据,选调度DTS包以便以后执行)->
    保存(可以不选)->[ 保存DTS包(如果以后还要转移这批相同的数据,可以把本次导出导入的内容和步骤保存起来,
    存到SQL Server即可,保存的时候要输入DTS的包名及详细描述)->下一步-> ]->完成
   
  正在执行包->图形界面显示创建表及插入记录的步骤和状态->完成

2.经过防火墙,不在同一个局域网里

①、导出表里的数据到文本文件:
    在SQL Server企业管理器里选中目的数据库,按鼠标右键,选所有任务->
    导入数据->弹出数据转换服务导入/导出向导窗口->下一步->

    选数据源-> 数据源(用于SQL Server的Microfost OLE DB提供程序)->
      服务器(可选择局域网内能访问到的所有SQL Server服务器)->
      选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->
      数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->

    选择目的->目的(文本文件)-> 文件名(在自己的电脑硬盘中生成一个自定义的文本文件) ->下一步->

    制定表复制或查询->选从源数据库复制表和视图(也可以选择用一条查询指定要传输的数据)->下一步->

    选择目的文件格式->源(选择要导出的表)->用默认的带分隔符->选第一行包含有列名称选项->下一步->

    保存、调度和复制包->时间->立即运行(如果要实现隔一段时间自动导出到文本文件,选调度DTS包以便以后执行)->
      保存(可以不选)-> [保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成
   
    正在执行包->图形界面显示表到文本文件的步骤和状态->完成

    如果生成的文本文件大于1M,要用压缩工具压缩后再到Internet上传输。

②、通过FTP或者remote desktop或者pcanywhere等方法把
    第①步生成的文本文件或者其压缩后的文件传到目的SQL Server数据库,如果有压缩要解压。

③、把文本文件导入目的SQL Server数据库
    直接把文本文件导入目的SQL Server数据库里跟文本文件同名的新表名时,默认的会把所有字段类型都变成字符串。

    所以我们要这样做:
    在源SQL Server数据库上先生成创建表的sql语句

    在SQL Server查询分析器里->选中源数据库里表名->按右键->在新窗口中编写对象脚本->创建->
      复制下新窗口内创建表名的sql语句

    到目标SQL Server数据库上查询分析器里执行创建表名的sql语句,生成空表结构。
    (如果已经存在这样的表名,修改建表的sql语句,在表名后面加上导入时间的年月信息,例如table_0113)

    调用导入/导出工具->弹出数据转换服务导入/导出向导窗口->下一步->

    选数据源-> 数据源(文本文件)->
      文件名(已传到目的SQL Server数据库下要导入的文本文件,后缀可以不是*.txt,
      但是常规文本编辑器能打开的文件,文件类型选全部)->下一步->

    选择文件格式->用默认的带分隔符->选第一行包含有列名称选项->下一步->
      制定列分割符->逗号->下一步->

    选择目的->目的(用于SQL Server的Microfost OLE DB提供程序)->
      服务器(可选择目标局域网内能访问到的所有SQL Server服务器)->
      选择使用windows身份验证还是使用SQL Serve身份验证(输入数据库的用户名和密码)->
      数据库(可选择上面选中SQL Server服务器上所有权限范围内的数据库)->下一步->
   
    选择源表和视图->修改目的表名为刚才创建的表名->转换(在目的表中追加行) ->下一步->
    保存、调度和复制包->
      时间->立即运行(如果要实现隔一段时间自动把文本文件导入,选调度DTS包以便以后执行)->
      保存(可以不选)-> [保存DTS包(保存的时候要输入DTS的包名及详细描述)->下一步->]->完成
   
    正在执行包->图形界面显示文本文件到表的步骤和状态->完成

    如果要更改导入时间的年月信息的表名,例如table_0113到原来的表名,
    在企业管理器里把原来的表名改成table_old_0113,table_0113改名成table。
    这会对应用程序里频繁访问的表照成一定的中断。

注意:源表上的建的索引和主键约束不能用上面介绍的1和2方法转移过来,还需要手工来建索引和主键。
      标志种子和not null的约束可以继承过来。
      导入视图时会把源视图里所有的真实数据导入成一个新表,而不是视图

[ 本帖最后由 灰儿 于 2008-6-16 14:31 编辑 ]
全部评论0
回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|小黑屋|管理员之家 ( 苏ICP备2023053177号-2 )

GMT+8, 2024-12-23 04:37 , Processed in 0.161405 second(s), 22 queries .

Powered by Discuz! X3.5

Cpoyright © 2001-2024 Discuz! Team