澳门新萄京官方网站-www.8455.com-澳门新萄京赌场网址

Server服务器和本地的数据融合,跨服务器数据库

2019-09-22 作者:www.8455.com   |   浏览(175)

在涉及老项目数据迁移的时候,数据库结构已经完全发生变化,而且需要对老数据进行特殊字段的处理,而且数据量较大,使用Navicat导出单表之后,一个表数据大概在100多万的样子,直接导出SQL执行根本行不通,执行到一般就GG。

 

利用VS2010进行SQL Server服务器和本地的数据融合

前言

最近有个维护的项目需要把 SQL Server 2012 的数据库迁移到 Azure SQL 上去。主要是因为租用的主机到期,而运营商停止了主机租赁业务,看来向云端的迁移是大势所趋啊!经过一番折腾最终成功迁移,但过程可谓是一波三折。故在此分享这次迁移中碰到的点点滴滴,希望对朋友们有所帮助。

之后尝试使用LINQ PAD直接操作两个数据库进行数据迁移,搜索一番,得知LINQ PAD是支持多数据库操作的,而且也是支持linked SqlServer。

本篇体验使用SQL Database Migration Wizard(SQLAzureMW)将SQL Server 2008数据库迁移到 Azure SQL Database。当然,SQLAzureMV还可以把SQL Server 2005/2012/2014迁移到Azure SQL Database。

Lionden 2013年1月24日星期四

最近项目中遇到用 SQL Server的程序,以前没用过这个数据库,于是尝试将其转换为 MySQL 的格式,可是不想在本地安装 SQL Server,于是决定在一个远程的 Windows 服务器上安装,并在本地连接它,然而在实现过程中遇到了诸多问题,记录于此。方便自家或者大家在需要的时候参考借鉴,下面来一起看看吧。

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 后问题消失。

下面进入正题,让我们把一个8G大小的陈年老库一步步的迁移到云上。看这过程中都需要什么样的工具,如何操作以及需要注意的事项。在此特别强调,旧数据库一般都是处于正在使用的状态,所以千万不要在真实的库上做各种实验。笔者所有的前期实验都是在通过恢复备份文件创建的测试库上完成的。

首先,我们先在新数据库的服务器上,打开SQL Server Management Studio,连接上数据库,然后在服务器对象上找到链接服务器,右键链接服务器选择新建链接服务器,如下图:

 

Visual Studio作为ASP.NET平台开发的最好IDE已经发布了2012测试版。作为一款IDE,VS自身不仅出色的集成了开发调试环境,而且作为微软自家的产品,VS2010更是在自己各产品间作了最好的合作。本文将要介绍的是“利用VS2010进行数据库融合的”一些使用心得。

环境信息

迁移要点分析

澳门新萄京官方网站 2

SQLAzureMV有几个版本:
1、SQLAzureMW v3x 适用于 .NET Framework 3.5 和 SQL Server 2008 R2 SP1
2、SQLAzureMW v4x 适用于  .NET Framework 4.5 和 SQL Server 2012
3、SQLAzureMW v5x 适用于 .NET Framework 4.5 和 SQL Server 2014

SQL Server自身也提供了数据库的一些操作,比如本人上篇博客()介绍了利用数据库文件迁移数据库的一些操作。但对于常在VS下开发的Developer,可能没有DB Manager对数据库文件的操作权限,可能就得用“导入和导出数据”进行数据库迁移了。前文说了,常在VS下开发,为神马不用VS进行数据库的操作呢?

先说一下环境,服务器的系统是 Windows Server 2016 Datacenter,数据库是 SQL Server 2016 Express。
本地这面是 Windows 7,用的软件是 Navicat Premium 11.2.7。

在云端创建Azure SQL Server

Azure SQL Database 是运行在 Azure SQL Server 中的,所以我们要在 Azure 上先把 Azure SQL Server 创建好。操作比较简单,直接在 Azure 上添加 SQL Server (logical server) 就可以了,请注意选择合适的区域(主要影响访问速度)。

链接服务器:填写你要关联的服务器IP地址
服务器类型:选择其他数据源。
提供程序:这里因为我是安装了Navicat for premium的,所以我直接选择的他的SQL提供程序。
数据源:这里还是填写关联服务器IP地址。

 

下面介绍一下利用VS的数据库“架构比较”和“数据比较”,将服务器端数据库迁移到本地,或者将服务器端数据融合到本地的方法。

安装 SQL Server 的过程很顺利,这里就不再多说,别忘了把 Microsoft SQL Server Management Studio 也装上...
以前没用过 SQL Server,甚至连安装之后用户名和密码都不知道怎么找...

允许从本地访问 Azure SQL Server

Azure SQL Server 创建好以后,我们通过 SSMS 测试一下能不能连上。当我们输入了正确的地址和用户信息后却弹出了一个提示框:

澳门新萄京官方网站 3

它提示我们当前的 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 也可以一次添加一个网段:

           澳门新萄京官方网站 4

然后我们来到安全性:

所有的版本下载在这里。

(由于寒假在家,没有连接数据库服务器,用“127.0.0.1”代表数据库服务器IP地址,用localhost代表本地数据库地址。)

获取用户名和密码

兼容性处理

由于 MS SQL Server 版本众多,且云上的版本与本地版本也有差异。所以能不能迁移成功主要看能不能找到并解决数据库之间的兼容性问题。
下面将详细的介绍笔者碰到的兼容性问题。

澳门新萄京官方网站 5

 

1 这个首先要求在本地数据库中新建一个数据库:

1、打开 Microsoft SQL Server Management Studio,登录的时候 身份验证 (Authentication) 选择 Windows 身份验证 (Windows Authentication),不需要密码就能登录进去。

兼容性处理详情

选择使用此安全上下文建立链接,然后填上你远程服务器的登陆用户名以及密码即可。

→登录到Windows Azure的"管理门户"

1.1

2、右键点击打开的连接,选择 属性 (Properties),选择 安全 (Security),然后设置为 SQL Server 和 Windows 身份验证模式 (SQL Server and Windows Authentication mode)。

数据库中设置的用户不存在

兼容性检查的报告显示下面的信息:

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。

然后我们打开Linq Pad,这里我是使用的LINQ PAD 5,新建一个链接,一直Next,然后到这个界面:

→点击左侧的"SQL数据库"

澳门新萄京官方网站 6

澳门新萄京官方网站 7

不支持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!在笔者的数据库中有好几处都用到了这个特性。怎么办?只好一遍又一遍的查看程序。最后发现程序中没有使用这个特性,好像当时只是有人用它做了一些说明。最终的结论是可以移除。

澳门新萄京官方网站 8

→点击页面左下方的"新建"
澳门新萄京官方网站 9
选择合适的"服务层"版本,选择默认的排序规则是"SQL_Latin1_General_CP1_CI_AS",选择服务器,点击右下角的"打勾"按钮。

Figure 1 源数据库

3、选择 连接 (Connection),然后选择 允许远程计算机连接到此服务器(貌似默认就是这样的),OK保存。

创建 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

选择Include additional databases,之后会弹出如下界面:

 

1.2

4、在打开的连接中,展开 安全 (Security),展开 登录名 (Logins),打开 sa 用户的属性,设置新密码并保存。猜测这个 sa 用户和 Mysql 里面的 root 用户差不多,我们一会就用这个账户和密码登录。

其他

还有一些点,主要是和业务相关的,就不在此赘述。个人感觉绝大多数的问题在网上都有不同的解决方案,关键是要采用自己的业务能够接受的方式去解决问题。
接下来把所有对数据库的变更写成一个脚本文件。在正式的迁移中,直接在正式库上执行脚本文件。

澳门新萄京官方网站 10

如果还没有创建服务器,先创建服务器:
澳门新萄京官方网站 11
点击右下角的"打勾"按钮。

澳门新萄京官方网站 12

澳门新萄京官方网站 13

迁移过程

MS 提供了不同的工具进行兼容性检查、迁移等工作。我们这里统统使用 SSMS (SQL Server Management Studio) 。下面看看具体的操作步骤。
在 SSMS 中右键需要迁移的数据库,选择 Tasks 中的"Deploy Database to Microsoft Azure SQL Database…"。

澳门新萄京官方网站 14

在打开的向导中点击 "next" 进入"Deployment Settings"界面。
澳门新萄京官方网站,首先需要设置 Azure SQL Server 的连接地址和连接账号:

澳门新萄京官方网站 15

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

澳门新萄京官方网站 16

注意 Azure SQL Database settings,MS 把数据库使用的资源划分成了三个不同的类别:Basic, Standard, Premium。每个类别中又划分了不同的收费标准,简单说就是你要使用更多更好的资源就要掏更多的钱。当然也可以反过来说,如果我用的资源不多花一点点钱就够了!
我们发现上图中的最后一行要求我们为 *.bacpac 文件指定一个存储路径。*.bacpac 文件是迁移过程中生成的中间文件,当兼容性检查通过后,就把数据库中的所有内容都导出到这个文件中。从这个信息我们可以得知,无论采用何种迁移方式,其核心操作都是两步:先从本地数据库生成 *.bacpac 文件,再从*.bacpac 文件恢复一个Azure SQL Database。
单击 "Next" 显示配置的详情,再下一步就开始兼容性检查。如果没有兼容性问题,就执行迁移操作。
我的数据库存在一些兼容性问题,所以显示了错误报告并终止了迁移操作:

澳门新萄京官方网站 17

点击 "Result" 列中的链接就能看到详细的报告,前面已经介绍过兼容性问题,直接执行我们处理兼容性问题的脚本文件,然后再试一次!

澳门新萄京官方网站 18

这次的执行已经没有错误提示了,其实后台已经开始了迁移过程。比较不爽的是这个过程没有详细的进度提示,只能黑等。我的经验数据是8G的库完成迁移大概是 8-12小时。当然这和你连接 Azure 的带宽有很大的关系…

上面选择你主数据库,下面不要点Pick from list来选择数据库,会提示找不到任何链接服务器,这里你手动点击一个条目,在Server 填上你刚才添加的服务器IP,后面database填上你要附加的数据库确定即可。
然后成功之后,你的连接就会成这个样子:
澳门新萄京官方网站 19

→点击左侧的"SQL数据库"

Figure 2 新建的空数据库

5、打开 SQL Server Configuration Manager,展开 SQL Server 网络配置,打开 SQLEXPRESS 的协议(我的是 Express 版默认的,其它的找对应的),打开它的 TCP/IP 属性,在 协议 选项卡中 Enabled 和 Listen All 都选 是,然后在 IP 地址 选项卡中,修改最下面修改 IP1 的配置,把 TCP Port 设置为 1433,确认保存,如下图。

总结

由于整个迁移过程涉及的方方面面实在太多,本文只是概要式的介绍笔者认为迁移过程中的要点和自己碰到的问题。总的感觉是 MS 提供的工具还算比较完善,网络上的各种已知问题解决方案也很详尽。所以尽管笔者碰到了很多的问题,但没有卡壳的地方,总算磕磕绊绊的完成了数据库迁移的任务。

然后你就可以直接用C#来进行操作了。

→点击"服务器"

2 然后打开VS2010的[数据]-[架构比较]-[新建架构比较]:

澳门新萄京官方网站 20

→点击服务器名称

澳门新萄京官方网站 21

6、重启 SQL Server 服务,在 SQL Server Configuration Manager 就可以重启就可以,有人说必须要启动 SQL Server Browser 服务,实测是不需要的。

→点击"配置"

架构比较 1 新建“架构比较”

7、防火墙添加例外。控制面板 -> 系统和安全 -> Windows 防火墙 -> 允许应用或功能通过 Windows 防火墙 -> 允许其他应用 -> 路径 -> [SQL Server安装目录]MSSQLBinnsqlservr.exe,一路确认保存,大功告成!

→点击"添加到允许的IP地址",把当前的ip地址添加到"白名单",点击"保存"。
澳门新萄京官方网站 22

2.1 首先新建“源架构数据库”链接:

本地 Navicat 连接远程 SQL Server

 

澳门新萄京官方网站 23

打开 Navicat,新建连接 -> SQL Server -> 连接名任意,IP 地址填远程服务器地址,验证选 SQL Server验证,用户名是 sa,密码是刚才的密码,连接测试会成功,不成功估计是上面哪里配置的有问题了,然后确定保存。

→双击"SQLAzureMV.exe"

架构比较 2 新建价格比较面板

貌似这一步说的都是废话。-.-

→在界面中勾选"数据库",点击"下一步"
澳门新萄京官方网站 24

2.2 首先填入服务器名,建议直接填入IP地址,点选搜索网络比较慢;然后填入数据库账户信息;第三步建议点选数据库,防止数据库名字手写填错;然后选择确定即可:

把 SQL Server 数据转换为 MySQL 数据

→在"连接到数据库..."窗口中,勾选"SQL Server身份验证",填写用户名和密码,指定数据库名称,勾选"保存登录信息",点击"连接"按钮
澳门新萄京官方网站 25

澳门新萄京官方网站 26

前提是在本地已经搭建好了 MySQL 数据库。

→在界面中点击"下一步"

架构比较 3 新建源数据库连接

1、新建 MySQL 连接,连接上后创建一个数据库。(不必多说)

→在界面中勾选"为所有对象生成脚本",点击"下一步"
澳门新萄京官方网站 27

2.3 对于“目标价格数据库”的建立相同,本次用“localhost”代表本地数据库,也可以填选另一个数据库服务器的地址:

2、双击新建的 MySQL 数据库,选择 导入向导,选择 ODBC,下一步。

→在"脚本向导汇总"界面中,点击"下一步"
澳门新萄京官方网站 28
跳出"生成脚本"提示框,点击"是"

澳门新萄京官方网站 29

澳门新萄京官方网站 30

→在"结果汇总"界面中,有"执行结果"和"SQL脚本"选项卡,点击"下一步"
澳门新萄京官方网站 31

架构比较 4 新建目标数据库连接

3、在 导入从 的选项中 Microsoft OLE Provider for SQL Server,下一步。

注意:如果生成的SQL脚本中有错误、或者不兼容情况,会以红色字体显示,这时候可以把SQL脚本保存到硬盘,再到SQL Server Management Studio中进行修改,修改后,可以在SQLAzureMV直接打开修改好的SQL脚本文件。

2.4 “源架构”、“目标架构”都填写完后,单击“确定”进行下一步即可:

澳门新萄京官方网站 32

→到"管理门户"中复制服务器名称,类似"xxxxxx.database.chinacloudapi.cn"的格式,填写如下:
澳门新萄京官方网站 33

澳门新萄京官方网站 34

4、然后在 连接 选项卡中设置好服务器信息,测试连接可以成功,选择好要转换的数据库,然后确定。

注意:在用户名称栏,填写可是符合"服务器名称@xxxxxx",@后面的xxxxxx与"xxxxxx.database.chinacloudapi.cn"中的xxxxxx一致。上图中的用户名是不对的。
在跳出的"执行脚本"提示框中,点击"是"。

架构比较 5 完成数据库架构比较的创建

5、选择导入的表,选择导入模式,开始导入,稍等一会,大功告成!

 

2.5 数据架构创建完成:

总结

点击"连接"。

澳门新萄京官方网站 35

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

→在界面中点击"下一步"
澳门新萄京官方网站 36

架构比较 6 数据库架构比较显示

您可能感兴趣的文章:

  • 安装mysql8.0.11及修改root密码、连接navicat for mysql的思路详解
  • Navicat中导入mysql大数据时出错解决方法
  • navicat连接mysql时出现1045错误的解决方法
  • Navicat for MySQL 乱码问题解决方法
  • navicat无法远程连接mysql的解决方法
  • Mysql安装 Navicat 出现1044/1045错误的解决方法
  • Navicat异地自动备份MySQL方法详解(图文)
  • Navicat修改MySQL数据库密码的多种方法

迁移成功显示如下界面:
澳门新萄京官方网站 37

2.6 将数据库架构比较窗口下拉,找到SQL文件处,保留现有的数据库文件和日志文件名,取消源数据库的融合,如图改为“跳过”:

→点击"退出"。

2.6.1

 

澳门新萄京官方网站 38

→打开"SQL Server Management Studio",在界面中填写相关信息,点击"连接"
澳门新萄京官方网站 39

架构比较 7 架构差异

 

2.6.2

注意:
○ 服务器名类似"xxxxxx.database.chinacloudapi.cn"的格式,用户名类似"服务器名@xxxxxx"的格式。
○ 还可以通过 来判断地址、用户名、密码是否正确。
○ 如果Sql Sever 2008还没有允许远程连接,参照这里。

澳门新萄京官方网站 40

 

架构比较 8 对架构差异的操作

→登录成功后,显示如下界面:

2.7 点选工具栏中的“写入更新”,至此完成了数据库结构的融合:

澳门新萄京官方网站 41

澳门新萄京官方网站 42

 

架构比较 9 写入更新

至此,使用SQL Database Migration Wizard(SQLAzureMW)将SQL Server 2008数据库迁移到 Azure SQL Database,成功!

3Server服务器和本地的数据融合,跨服务器数据库操作。 进行数据库数据的融合,选择[数据]-[数据比较]-[新建数据比较],如图:

 

澳门新萄京官方网站 43

 

数据比较 1 新建数据比较

 

3.1 同架构比较一样,建立“源架构”和“目标架构”数据库的连接:

 

澳门新萄京官方网站 44

数据比较 2 新建数据比较面板

3.2 完成创建后,显示如图所示,保持3处默认即可,阔以选择“下一步”继续设置,也阔以选择“完成”完成设置,这里选择下一步:

澳门新萄京官方网站 45

数据比较 3 完成数据库连接

3.3 可以点开表查看表,以便去掉不做比较的表,本数据库中没有创建“视图”,所以没有选择对视图进行比较,选择“完成即可”:

澳门新萄京官方网站 46

数据比较 4 选择要比较的表、视图

3.4 完成了对源数据库和目标数据库的比较:

澳门新萄京官方网站 47

数据比较 5 数据比较结果

3.5 点选“写入更新”将源数据库中的数据写入到目标数据库中:

澳门新萄京官方网站 48

数据比较 6 将差异写入目标数据库

3.6 写入更新成功:

澳门新萄京官方网站 49

数据比较 7 差异写入成功

3.7 完成了对服务器和本地数据库的架构和数据比较,并完成了数据的融合,打开SQL Server 2008查看倒入的数据库信息,如图:

澳门新萄京官方网站 50

Figure 3 完成数据融合的数据库

至此,完成了“利用VS2010进行SQL Server服务器和本地的数据融合”的所有操作。

最后提醒各位,对数据库操作一定要谨慎,不要弄错源数据库和目标数据库。

Lionden Lee:hsdlionden@gmail.com

(转载请注明)

本文由澳门新萄京官方网站发布于www.8455.com,转载请注明出处:Server服务器和本地的数据融合,跨服务器数据库

关键词: