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

近些年起只保障的种用拿 SQL Server 2012 的数据库迁移到 Azure SQL
上去,迁移过程可谓一波三折,故在斯分享这次迁徙中碰到的点点滴滴,希望对情侣等拥有助。

Azure SQL 的版本

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

 

及图备受首先个数据库服务器是当地安装的 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
测试一下连接情况。当我们输入了无可非议的地址与用户信息后可弹有了一个提拔框:

 

它提醒我们,当前的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也堪同蹩脚上加一个网段:

 

 

兼容性处理

是因为 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…”。

 

以打开的引路中点击 “next” 进入 “Deployment Settings” 界面。

率先要设置Azure SQL Server的连续地址与连续账号:

 

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

 

留意 Azure SQL Database
settings,MS把数据库使用的资源划分成了三单不等的种类:Basic, Standard,
Premium。每个门类吃以分开了不同之收款标准,简单说就是是您要是动更多更好的资源就设付出更多之钱。当然为可以反过来说,如果自身因此之资源不多,付一点点钱虽足足了!

咱俩发现及图备受之末梢一行要求我们吧 *.bacpac
文件指定一个仓储路径。*.bacpac
文件是搬迁过程被变化的中等文件,当兼容性检查通过后,就拿数据库中之持有内容还导出到之文件中。从者消息我们好识破,无论采取何种迁移方式,其中心操作都是少数步:先由当地数据库生成
*.bacpac 文件,再从*.bacpac 文件恢复一个 Azure SQL Database。

单击 “Next”
显示配置的详情,再下同样步就是开兼容性检查。如果无兼容性问题,就实行迁移操作。

本身之数据库有部分兼容性问题,所以显得了错误报告并终止了搬迁操作:

 

点击 “Result”
列中的链接就是能收看详细的喻,前面都介绍了兼容性问题,直接实施我们处理兼容性问题的剧本文件,然后再试一次!

 

这次的实施业已没错提示了,其实后台就上马了搬过程。比较不便利之是这进程并未详细的速度提示,只能耐心等。我的更数据是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

 

相关文章