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

前言

在三个种类上客户供给读取office online server
二〇一四的对文书档案的备注消息,如下图:

图片 1

从前思路老纠结在OOS那一个在线上,总有认为那些消息存款和储蓄在某些列表中,其实错了,这么些备注音信实际正是word文书档案的备注消息,微软采取openxml开发的OOS,由此笔者也使用openxml读取备注消息的思绪开始展览尝试,结果发现原本是能够的,成成效应图如下:

图片 2

注意:

OpenXml格式只有office2006以及上述版本才支撑的格式,就算office97-2000格式的文书档案是二进制格式的文书档案,openxml十分小概展开此操作,需求用代码另存为二〇〇五上述的格式。当然OOS在线编辑也不帮忙此office97-二〇〇一格式的文书档案举办备注消息,如下是office97-2000包容格式的文档在OOS果然不援助备注音讯的编辑撰写,无批注按钮,如下图:

 

 图片 3

 

近来有个保安的品种必要把 SQL Server 二〇一一 的数据库迁移到 Azure SQL
上去,迁移进程可谓一波三折,故在此分享这一次迁徙中碰着的点点滴滴,希望对朋友们拥有援救。

实现

① 、 下载OpenXMLSDK2.5,如下下载地址:

https://www.microsoft.com/en-us/download/details.aspx?id=30425

图片 4

二 、 下载实现后,引用如下1个DLL,如下图:

图片 5

③ 、具体代码如下:(注意,sp文档库的文书档案要转成stream流的不二法门展开openxml操作)

 

StringBuilder sb = new StringBuilder();
            #region//spsite
            using (SPSite site = new SPSite("http://sp2016:8001"))
            {
                if (site != null)
                {
                    #region//spweb
                    using (SPWeb web = site.OpenWeb(""))
                    {
                        if (web != null)
                        {
                            Stream docStream = web.GetFile("http://sp2016:8001/DocLib1/测试文档.docx").OpenBinaryStream();

                            #region//openxml读取备注信息
                            using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(docStream, true))
                            {
                                //body
                                var body = wordDoc.MainDocumentPart.Document.Body;
                                //parts
                                var paras = body.Elements<Paragraph>();
                                //得到备注信息
                                Comments comments = wordDoc.MainDocumentPart.WordprocessingCommentsPart.Comments;
                                //循环备注信息
                                foreach (Comment item in comments)
                                {
                                    //内容
                                    string content = item.InnerText;
                                    //作者
                                    string userID = item.Author;
                                    //时间
                                    string createT = item.Date.Value.ToString("yyyy-MM-dd HH:mm:ss");
                                    //sb
                                    sb.Append("作者:" + userID + ",备注内容:"+ content +",时间:"+ createT +"\r\n");
                                }

                            }
                            #endregion
                        }
                    }
                    #endregion
                }
            }
            #endregion
            //赋值给textBox
        this.textBox1.Text = sb.ToString();

Azure SQL 的版本

Azure SQL Database 是微软提供的 SQL 服务(PaaS)。最新的本子叫 Azure SQL
Database V12,其实微软也许通过 SQL Server 二〇一六 来提供数据库服务:

 图片 6

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

唯独可不要认为 Azure SQL Database
提供的数据库和本土安装版本是一律的哦。它们依然有不可计数差其余,这点在搬迁现有数据库时进一步首要。

由于提供的是在线的劳动,所以 Azure SQL Database
能够高速的公布新特点,这个从不断更新的 MSDN
文书档案尝鼎一脔。MS也强烈提出大家在和 Azure SQL Database
打交道时一定要用最新版的工具。小编在刚开始运用了 SQL Server 2016 中的
SSMS (SQL Server Management Studio) ,结果总是 Azure SQL
后意识呈现的新闻和 Azure portal 对不上,安装新型版的 SSMS 后难题没有。

上面进入正题,看看迁移的历程中都急需哪些的工具,怎么着操作以及供给专注的事项。在此尤其强调,旧数据库一般都以处刘恒在利用的情事,所以绝对不要在实际的库上做各样实验。小编有着的早期试验都是在经过恢复生机备份文件创造的测试库上完毕的。

 

效果

图片 7

 

 

搬迁要点分析

在云端创设 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
测试一下连连情形。当大家输入了不易的地方和用户新闻后却弹出了一个提示框:

 图片 8

它提示大家,当前的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也得以2次添加2个网段:

 图片 9

 

包容性处理

由于 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
账号访问数据库。当然你也足以为1个数据库创立独立的拜访账号,具体操作请参见
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!在小编的数据库中有某个处都用到了那么些特点。咋做?只可以壹遍又1次的查看程序。最终发现先后中尚无运用那性情子,好像当时只是有人用它做了有的验证。幸好,最终的定论是能够移除的。

创建 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…”。

 图片 10

在开拓的向导中式点心击 “next” 进入 “Deployment Settings” 界面。

第贰供给设置Azure SQL Server的总是地址和延续账号:

 图片 11

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

 图片 12

专注 Azure SQL Database
settings,MS把数据库使用的能源划分成了七个不等的项目:Basic, 斯坦dard,
Premium。各样连串中又细分了差异的收款标准,不难说正是你要动用越多更好的能源就要付越来越多的钱。当然也足以反过来说,固然小编用的财富不多,付一丝丝钱就够了!

咱俩发现上海体育场合中的最终一行供给我们为 *.bacpac
文件钦命1个存款和储蓄路径。*.bacpac
文件是搬迁进程中生成的高级中学级文件,当包容性检查通过后,就把数据库中的全部剧情都导出到那一个文件中。从这么些消息大家能够识破,无论采纳何种迁移形式,其基本操作都是两步:先从本地数据库生成
*.bacpac 文件,再从*.bacpac 文件复苏贰个 Azure SQL Database。

单击 “Next”
显示配置的详情,再下一步就从头包容性检查。如若没有包容性难点,就进行迁移操作。

本人的数据仓库储存在部分包容性难点,所以呈现了错误报告并终止了迁移操作:

 图片 13

点击 “Result”
列中的链接就能收看详细的告知,前边已经介绍过包容性难题,直接执行大家处理兼容性难题的台本文件,然后再试三次!

 图片 14

这一次的推行已经没有错误提示了,其实后台已经上马了搬迁进度。相比不便利的是其一进度并未详尽的进程提醒,只可以耐心等待。作者的经历数据是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