阿里云SQLServer2008 客户端导入数据库教程

一、适用场景

源端数据库是SQL Server 2005 及以上。(SQL Server 2000未测试。)

数据文件总大小在10G以内。

可以在低峰期停应用。

二、导出步骤

1、软件准备

如果源端SQL Server版本低于2008,则下载一个2008的客户端工具,在任意一台机器上安装。

下载Microsoft? SQL Server? 2008 Management Studio

http://www.microsoft.com/zh-cn/download/details.aspx?id=7593

安装,忽略各种提示,都选默认选项。

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 输出日志名[object Object]

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[object Object]

4)在RDS数据库上的表上加索引和主键、外键等。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://sulao.cn/post/107.html

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。