迁移 SQL Server 到 Azure SQL 实战

2023年 8月 13日 61.5k 0

近有个维护的项目需要把 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 后问题消失。

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

迁移要点分析

在云端创建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。此时我们有两种做法。

  • 点击对话框中的 "Sign in",用Azure账户登录。然后点击 "OK",此时已经完成了防火墙规则的设置,SSMS 已登录 Azure SQL Server。这种方法一般用于开发和测试,只能添加当前客户端所使用的 IP。
  • 更加通用的方法是登录 Azure portal,进入 Azure SQL Server 的配置界面,为防火墙添加规则。同样的,可以添加单个 IP 也可以一次添加一个网段:
  •            

    兼容性处理

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

    兼容性处理详情

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

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

    相关文章

    SQL数据库触发器语法详解 (sql数据库触发器语法)

    2023-08-06
    数据库
    语法
    触发器

    快速简单的删除Oracle数据库字段方法 (删除oracl数据库字段)

    2023-08-06
    数据库
    字段
    删除

    如何打开社工数据库bak文件 (社工数据库bak怎么打开)

    2023-08-06
    数据库
    打开
    社工

    实现数据库按拼音排序的方法和技巧 (数据库按拼音排序)

    2023-08-06
    数据库
    排序
    按拼音

    探究Sybase数据库的性能和功能特点 (sybase数据库怎么样)

    2023-08-06
    数据库
    性能
    探究

    SQL Server 如何成功建立自己的数据库? (sql server 建立数据库)

    2023-08-06
    数据库
    自己的
    建立

    如何在Oracle中查看数据库触发器? (oracle查看数据库触发器)

    2023-08-06
    数据库
    查看
    触发器

    数据库表数据量千万级,对性能影响有多大? (数据库表千万级数据量多吗)

    2023-08-06
    数据库
    级数
    有多大

    如何使用Oracle按时间导出表数据库? (oracle按时间导出表数据库)

    2023-08-06
    数据库
    导出
    如何使用

    数据库存储:帖子长期保存,信息永不丢失 (帖子存数据库)

    2023-08-06
    数据库
    丢失
    帖子

    小米六数据库:全方位数据保障和优化方案 (小米六数据库)

    2023-08-05
    数据库
    优化
    小米

    简易教程:使用dbe数据库实现数据连接 (dbe数据库 数据连接)

    2023-08-05
    数据
    数据库
    连接

    Oracle实现多个数据库链接的简便方法 (oracle链接多个数据库)

    2023-08-05
    数据库
    多个
    链接

    数据库索引:用哪种方法建立? (数据库索引用什么建的)

    2023-08-05
    索引
    数据库
    哪种

    实现高效缓存同步:Redis数据库技巧大全 (redis 数据库缓存同步)

    2023-08-05
    数据库
    缓存
    同步

    如何利用数据库实现高效的模糊匹配查询? (数据库实现模糊查询)

    2023-08-05
    查询
    数据库
    模糊

    数据库有哪些安装方式和位置? (数据库是装在什么上)

    2023-08-05
    数据库
    位置
    装在

    Lactmed数据库:妈妈们必备的喂养指南 (lactmed 数据库)

    2023-08-05
    数据库
    必备
    喂养

    数据库设计中的主属性定义及作用 (数据库主属性是什么)

    2023-08-05
    数据库
    定义
    属性

    数据库分区操作不当常常造成分区不清的问题 (分区不清数据库)

    2023-08-05
    数据库
    分区
    不清

    相关文章

    Oracle如何使用授予和撤销权限的语法和示例
    Awesome Project: 探索 MatrixOrigin 云原生分布式数据库
    下载丨66页PDF,云和恩墨技术通讯(2024年7月刊)
    社区版oceanbase安装
    Oracle 导出CSV工具-sqluldr2
    ETL数据集成丨快速将MySQL数据迁移至Doris数据库

    发布评论