本章我将介绍如何将本地(局域网内)的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里。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构