一、适用场景

 
源端数据库是SQL Server 2005 及以上。(SQL Server 2000未测试。)
数据文件总大小在10G以内。
可以在低峰期停应用。
 

二、导出步骤

 
1、软件准备
如果源端SQL Server版本低于2008,则下载一个2008的客户端工具,在任意一台机器上安装。
 
下载Microsoft® SQL Server® 2008 Management Studio
 
 
安装,忽略各种提示,都选默认选项。
 
2、运行SQL Server 2008 Management Studio,连接到源数据库。
 
 
3、导出目标数据库的生成脚本
 
 
弹出“脚本向导”的对话框,按提示选择下一步
 
 
选择数据库
不要勾选“为所选数据库中的有所对象编写脚本”
 
 
选择脚本选项,设置“编写数据的脚本”为TRUE,其他选项根据实际需要修改。下图是建议值。简单起见除了创建数据库的脚本,登录脚本,编写统计信息,生成依赖对象脚本这几项一定要设置为FALSE,其他都可以设置为TRUE。
 
 
选择对象类型,注意不要选“用户和数据库角色”
 
 
选择存储过程(如果没有,就直接跳过)
 
 
选择表,不用迁移的表就不要选了
 
 
选择视图,如果没有就跳过
 
 
选择输出选项,可以选择导出到一个文件,也可以选择每个对象导出一个文件。数据量非常大的情况下建议每个对象导出一个文件。
 
 
最终确认
 
 
等待导出,数据量大的情况下,时间会比较久。
 
 
4、新建到RDS数据库的连接,打开查询分析器,执行上面导出的脚本。
如果脚本文件比较大,建议前面针对每个对象导出一份文件。
也可以不打开脚本进行执行,利用SQLCMD模式。
 
 
在目标RDS数据库上打开一个查询分析器,然后点击菜单“查询”,选择“SQLCMD模式”
然后在查询分析器里执行
执行OS命令是前面加上两个感叹号,后面跟上windows cmd命令
执行sql文件
:r d:\test\script20120605.sql
 
 
当文件很大的时候(如1G以上),如果云服务器内存不大,很有可能会报 “OufOfMemory Exception”。这个时候就换个方法调用sqlcmd。
在windows的命令行下(开始->运行,输入:cmd
Sqlcmd –S “xxx.sqlserver.rds.aliyuncs.com,3433” -U 用户名 -P 密码 -d 数据库名 -i SQL文件路径 -o 输出日志名
 
 
5. 验证数据(略)
 

三、可能遇到的问题:

 
1、 如果导出脚本里有乱码,请检查导出文件是否是Unicode格式
2、如果导入新库后查询有乱码,请检查新库和老库的服务器排序规则是否一致。
3、大表的导入慢问题。
 
当表的数据量非常大的时候,如超过百万。上面的导入效率可能非常的低。这时候可以用bcp命令来导数据。方法如下:
 
1) 在源库主机上或者云服务器上用bcp命令导出源库数据。
Bcp test.dbo.adminInfo out d:\tt\admininfo.out -T -S AY120724113142a -c
 
 
2) 用前面SQLServer导出脚本在目标RDS 数据库中建好表,但是不要建索引和主键、外键约束。
3)用bcp导入数据
bcp yundns8885.dbo.admininfo in d:\tt\admininfo.out –U yundns8885 –P xxxxxxxx -S "sp500xxxxxxx.sqlserver.rds.aliyuncs.com,3433" –c –E –b 1000
 
 
4)在RDS数据库上的表上加索引和主键、外键等。
 

阿里云SQL Server 2008 客户端导入数据库教程的更多相关文章

  1. 有关sql server 2008无法导入数据库mdf文件的处理方法

    解决方法1:根据该博客中的引导,加上自己安装版本的细节,可以添加成功 http://www.2cto.com/database/201408/328930.html 解决方法2: 根据<数据库系 ...

  2. sql server 2008怎样导入mdf,ldf文件,怎样解决导入mdf,ldf文件时出现附加数据库错误的问题

    废话不多说,直入主题吧. 1:打开sql server 2008,右键数据库-->附加 2:这时出现这个界面点击添加 3:打开数据库实例的安装目录,打开DATA文件夹;(如我的实例目录地址为:D ...

  3. 基于Sql Server 2008的分布式数据库的实践(二)

    原文 基于Sql Server 2008的分布式数据库的实践(二) 从Win7连接Win2003的Sql Server 2008 1.新建链接服务器链接到Win2003的Sql Server 2008 ...

  4. 基于Sql Server 2008的分布式数据库的实践(一)

    原文 基于Sql Server 2008的分布式数据库的实践(一) 配置Sql Server 2008(Win7) 1.打开SQL server2012,使用windows身份登录 2.登录后,右键选 ...

  5. sql server 2008如何导入mdf,ldf文件

    sql server 2008怎样导入mdf,ldf文件   网上找了非常多解决sql server导入其它电脑拷过来的mdf文件,多数是不全.遇到的解决方法不一样等问题,下边是找到的解决这个问题的最 ...

  6. SQL SERVER 2008 R2 还原数据库3154错误

    1.SQL SERVER 2008 在还原数据库时,会报错. 提示错误:"备份集中的数据库备份与现有的 '***' 数据库不同.RESTORE DATABASE 正在异常终止. (Micro ...

  7. SQL Server 2008 R2 主从数据库同步

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

  8. SQL Server 2008 R2 主从数据库同步设置

    一.准备工作: 主数据库服务器: OS:Windows Server 2008 R2    DB: SQL Server 2008 R2 Hostname : CXMasterDB IP: 192.1 ...

  9. 基于Sql Server 2008的分布式数据库的实践(五)

    原文 基于Sql Server 2008的分布式数据库的实践(五) 程序设计 ------------------------------------------------------------- ...

随机推荐

  1. WordPress 前端投稿/编辑插件 DJD Site Post(支持游客和已注册用户)

    转自:http://www.wpdaxue.com/front-end-publishing.html 说到前端用户投稿,倡萌之前推荐过3个不错的插件: WordPress匿名投稿插件:DX-Cont ...

  2. keychain 多应用共享数据

    地址:http://blog.csdn.net/jerryvon/article/details/16843065 补充: 若plist跟项目不在同一级目录下,可通过XXX/xxx.plist的方式设 ...

  3. 在老项目中使用Gradle:更改默认目录结构

    apply plugin: 'war' sourceCompatibility = 1.5 version = "1.0" //中央仓库 repositories { mavenC ...

  4. ubuntu下eclipse突然崩溃,解决办法

    rm YOUR_WORKSPACE/.metadata/.plugins/org.eclipse.core.resources/.snap 抛出的一场如下: !SESSION 2013-09-30 1 ...

  5. wikioi 1514 and ZJOI2006 书架

    1514 书架 0人推荐 收藏 发题解 提交代码 报错 题目描述 输入描述 输出描述 样例输入 样例输出 提示 题目描述 Description 小 T有一个很大的书柜.这个书柜的构造有些独特,即书柜 ...

  6. __str__

    __str__是被print函数调用的,一般都是return一个什么东西.这个东西应该是以字符串的形式表现的.如果不是要用str()函数转换.当你打印一个类的时候,那么print首先调用的就是类里面的 ...

  7. std::move()和std::forward()

    std::move(t)负责将t的类型转换为右值引用,这种功能很有用,可以用在swap中,也可以用来解决完美转发. std::move()的源码如下 template<class _Ty> ...

  8. Ubuntu的which、whereis、locate和find命令

    which 只能寻找执行文件 ,并在PATH变量里面寻找. whereis 从linux文件数据库(/var/lib/slocate/slocate.db)寻找,所以有可能找到刚刚删除,或者没有发现新 ...

  9. 【转】如何实现一个malloc

    任何一个用过或学过C的人对malloc都不会陌生.大家都知道malloc可以分配一段连续的内存空间,并且在不再使用时可以通过free释放掉.但是,许多程序员对malloc背后的事情并不熟悉,许多人甚至 ...

  10. 【转】shell 教程——06 Shell变量:Shell变量的定义、删除变量、只读变量、变量类型

    Shell支持自定义变量. 定义变量 定义变量时,变量名不加美元符号($),如: variableName="value" 注意,变量名和等号之间不能有空格,这可能和你熟悉的所有编 ...