本章我将介绍如何将本地(局域网内)的SQL Server 2008 R2数据库内容迁移到SQL Azure云端数据库上。
在开始本章的内容之前,我建议大家能够对前熟悉了解之前几章的内容:
- SQL Azure(三) 创建一个SQL Azure 服务器
- SQL Azure(四) 创建一个SQL Azure数据库
- SQL Azure(五) 使用SQL Server Management Studio连接SQL Azure
为了更好的进行动手试验,我希望大家能够预先安装以下软件:
- SQL Server 2008 R2
- SQL Server Management Studio
一.创建新的SQL Azure 数据库
1.首先打开浏览器,导航到https://windows.azure.com/,输入订阅Azure服务的Live ID。点击在左侧的"数据库"连接。
2.因为前几张我们已经创建了位于香港数据中心的SQL Azure服务器,所以我们只要创建一个新的SQL Azure数据库就可以了。
3.新的数据库信息包含:
- 数据库名: SQLAzureFrom2008R2
- 版本Web
- 最大大小: 1GB
4.点击OK
5.点击"防火墙规则"按钮,选中"允许其他Windows Azure服务访问此服务器"
6.在"防火墙"规则里,点击"添加"按钮,让某个特定的IP能够访问我创建的SQL Azure服务器。为了方便,我是这样创建的
- 规则名称: All IP
- IP范围开始值: 0.0.0.0
- IP范围结束值: 255.255.255.255
二.生成DDL脚本
您可以使用本地已经创建好的SQL Server 2008 R2服务来进行以下的迁移工作。我已经在本地安装了SQL Server 2008 R2并且创建了数据库School,包含数据表和存储过程。T-SQL脚本可以在这里下载.
1.启动SQL Server Managemenet Studio
2.连接本地的School数据库。
3.选中School数据库,右键-->Task-->Generate Scripts
4.如果出现"Introduction"对话框,选择"Next"
5.在"Choose Objects"对话框里,选择"Select specific database objects",然后选择Table(表),Views(视图),Store Procedures(存储过程)等。
(注意: SQL Azure要求所有的表必须要有聚集索引。如果本地SQL Server里的表没有聚集索引,就不能导入到SQL Azure里)
6.在"Choose Objects"里选择"Select specific database objects" (因为本地数据库School的所有Table均已有聚集索引,所以我们选择所有的Table)
7.在"Set Scripting Options"对话框里,选择"Advanced"按钮
8.修改选项:
- General-->"Script for the database engine type"设置成"SQL Azure Database"
- Table/View Options-->Script Index设置成"True"
9.在Set Scripting Options对话框了,选择"Save scripts to a specific location",然后选择"Save to new query window"
10.在Summary对话框里,选择Next
11.查看Save or Publish Scripts对话框,然后点击Finish
三.在SQL Azure里执行导出的T-SQL语句
1.在之前的生成脚本窗口里,右键Connection-->Change Connection
2.在弹出的Connect to Database Engine对话框里输入
- SQL Azure的Server name
- 登录用户名
- 密码
3.点击"Options",在Connection Properties里指定我们要连接的SQL Azure Database
4.连接SQL Azure成功后,按F5(或者Query-->execute menu option)执行脚本
可以看到之前在本地SQL Server的Table和Store Procedure已经成功迁移到SQL Azure里。