搬迁 SQL Server 数据库到 Azure SQL 实战

前不久有个保证的类型要求把 SQL Server 2012 的数据库迁移到 Azure SQL
上去,迁移进程可谓一波三折,故在此分享这一次迁徙中遇见的点点滴滴,希望对恋人们富有辅助。

Azure SQL 的版本

Azure SQL Database 是微软提供的 SQL 服务(PaaS)。最新的本子叫 Azure SQL
Database V12,其实微软依旧经过 SQL Server 2014 来提供数据库服务:

 图片 1

上图中第三个数据库服务器是地面安装的 SQL Server
2014,第三个和第多少个则是云上的 Azure SQL
Database。大家可以很清楚的收看,它们的本子是均等的。

只是可不要认为 Azure SQL Database
提供的数据库和当地安装版本是一律的哦。它们依旧有那么些差别的,那一点在搬迁现有数据库时进一步主要。

是因为提供的是在线的劳动,所以 Azure SQL Database
可以便捷的表露新特点,那么些从不断更新的 MSDN
文档一叶知秋。MS也强烈指出我们在和 Azure SQL Database
打交道时肯定要用最新版的工具。小编在刚伊始运用了 SQL Server 2014 中的
SSMS (SQL Server Management Studio) ,结果连续 Azure SQL
后意识突显的音讯和 Azure portal 对不上,安装新型版的 SSMS 后问题没有。

上边进入正题,看看迁移的历程中都亟需什么样的工具,怎么样操作以及须要专注的事项。在此尤其强调,旧数据库一般都是居于正在利用的景色,所以相对不要在实际的库上做种种尝试。小编有着的早期试验都是在经过苏醒备份文件成立的测试库上达成的。

 

搬迁要点分析

在云端创设 Azure SQL Server

Azure SQL Database 是运行在 Azure SQL Server 中的,所以我们要在 Azure
上先把 Azure SQL Server 创造好。操作进程比较简单,直接在 Azure 上添加
SQL Server (logical server)
就可以了,请小心接纳适用的区域(那会影响访问速度)。

同意从本地访问 Azure SQL Server

Azure SQL Server 创制好以后,我们透过 SSMS
测试一下再三再四意况。当大家输入了不错的地址和用户音讯后却弹出了一个提示框:

 图片 2

它提醒我们,当前的IP不能够访问 Azure 上的数据库服务器,并且让自身以 Azure
账号登录并创立一条防火墙规则。

骨子里那是 Azure
提供的一个康宁措施,它让您显式的指定哪些IP地址或者IP网段可以访问 Azure
SQL Server。

那时我们有二种缓解形式:

1.点击会话框中的 ”Sign in”,用 Azure 账户登录;然后点击
”OK”,此时已经达成了防火墙规则的装置,SSMS 已登录 Azure SQL
Server。那种措施一般用于支付和测试,只好添加当前客户端所运用的IP。

2.尤为通用的格局是登录 Azure portal,进入 Azure SQL Server
的陈设界面,为防火墙添加规则。同样的,能够拉长单个IP也得以四遍添加一个网段:

 图片 3

 

包容性处理

是因为 MS SQL Server
版本众多,且云上的版本与本土版本也有差距,所以能无法迁徙成功,主要看能否找到并解决数据库之间的包容性问题。

上边将详细的牵线小编碰着的包容性问题。

包容性处理详情

数据库中安装的用户不设有

包容性检查的报告彰显下边的音讯:

Error SQL71564: Error validating element [xxxx]: The element [xxxx] has been orphaned from its login and cannot be deployed.

中间的xxxx是数据库中设置的用户名。

其一错误的原委是用户被定义在地头的 SQL Server
中,数据库中只要采用用户的新闻,把数据库迁移到云上后,就找不到相应用户的概念了,所以就须求移除本地用户的音信。

不要担心数据库的拜会问题,因为成功搬迁后,你能够拔取刚才制造的 Azure SQL
Server
账号访问数据库。当然你也足以为一个数据库创制独立的访问账号,具体操作请参见
MSDN。

不支持Extended Property

兼容性检查的告诉显示上面的信息:

One or more unsupported elements were found in the schema used as part of a data package.

Error SQL71564: The element Extended Property: [dbo].[xxxx].[MS_Description] is not supported when used as part of a data package (.bacpac file).

其间的xxxx是数据库中一张表的称号。

那下可麻烦了,不援助 Extended
Property!在小编的数据库中有好几处都用到了这一个特点。怎么办?只可以四次又一回的查看程序。最终发现先后中尚无运用那个特点,好像当时只是有人用它做了有些证实。还好,最后的下结论是可以移除的。

创建 clustered index

包容性检查的告诉显示上边的音讯:

One or more unsupported elements were found in the schema used as part of a data package.

Error SQL71564: Table Table: [dbo].[xxxx] does not have a clustered index.  Clustered indexes are required for inserting data in this version of SQL Server.

内部的xxxx是数据库中一张表的称号。

亟待给表创立 clustered
index,那可不是一件小事情,因为任何对表的修改都可能会潜移默化到程序逻辑,怎么做呢?网上的意中人们曾经有了比较可相信的缓解方案,就是给表添加一列用来做
clustered index,那样原本表中的列就不曾发生变化:

ALTER TABLE [xxxx] ADD

RowId int NOT NULL IDENTITY (1, 1) PRIMARY KEY CLUSTERED

GO

 

其他

再有一对点,首如若和事情相关的,就不在此赘述。个人感觉绝一大半的题目在网上都有两样的缓解方案,关键是要拔取自己的事务可以接受的点子去解决问题。

接下去把拥有对数据库的改动写成一个剧本文件,在规范的迁徙中,直接在规范库上执行脚本文件。

搬迁进度

MS提供了分裂的工具举办包容性检查、迁移等工作。大家那里统统选择 SSMS (SQL
Server Management Studio) 。

下边看看现实的操作步骤。

在 SSMS 中右键需要迁移的数据库,选用 Tasks 中的 ”Deploy Database to
Microsoft Azure SQL Database…”。

 图片 4

在打开的辅导中点击 “next” 进入 “Deployment Settings” 界面。

第一要求设置Azure SQL Server的连天地址和一连账号:

 图片 5

接下去设置迁移后的数据库名称和资源配置:

 图片 6

在意 Azure SQL Database
settings,MS把数据库使用的资源划分成了几个区其余种类:Basic, Standard,
Premium。每个体系中又分开了不一样的收款标准,简单说就是你要使用更加多更好的资源就要付更多的钱。当然也得以反过来说,借使自己用的资源不多,付一点点钱就够了!

咱俩发现上图中的最后一行必要大家为 *.bacpac
文件指定一个存储路径。*.bacpac
文件是搬迁进程中变化的中级文件,当包容性检查通过后,就把数据库中的所有情节都导出到这一个文件中。从这些信息大家得以查出,无论使用何种迁移格局,其基本操作都是两步:先从本地数据库生成
*.bacpac 文件,再从*.bacpac 文件复苏一个 Azure SQL Database。

单击 “Next”
展现配置的详情,再下一步就从头包容性检查。即使没有兼容性问题,就推行迁移操作。

自家的数据库存在部分包容性问题,所以显得了错误报告并终止了搬迁操作:

 图片 7

点击 “Result”
列中的链接就能看到详细的报告,后边早已介绍过包容性问题,直接执行大家处理包容性问题的本子文件,然后再试四遍!

 图片 8

这一次的进行业已远非不当提醒了,其实后台已经开首了迁移进度。相比较不便于的是那几个进程并未详细的快慢提醒,只能够耐心等待。我的阅历数据是8G的库落成搬迁大致是8-12时辰。当然这和您总是
Azure 的带宽有很大的涉及…

结语

出于整个搬迁进度涉及的所有实在太多,本文只是概要式的牵线作者以为迁移进度中的要点和和气遭遇的问题。总体感觉是MS提供的工具还算相比较完善,网络上的种种已知问题一蹴即至方案也很详细。所以即便作者碰着了许多的问题,但从未卡住的地点,总算磕磕绊绊的成功了数据库迁移的天职。

 

有关阅读:

最全的Windows
Azure学习课程汇总

Azure Blob Storage 基本用法 — Azure Storage 之
Blob

Azure Queue Storage 基本用法 — Azure Storage 之
Queue

Azure File Storage 基本用法 — Azure Storage 之
File

Azure Table storage 基本用法 — Azure Storage 之
Table

 

相关文章