沈云,资深工程师,微软解决方案专家

1. 什么是 Azure SQL

Azure 上有 PaaS 层的 SQL 服务叫做 Azure SQL 数据库。

Azure SQL 简单来讲,就是一种以服务方式提供的关系型数据库。你可以直接申请需要使用的数据库,只需关注自己的应用,无需关心后端如何工作,也无需备份和运维,当然仍需进行调优等动作。

Azure SQL 数据库是云中的关系数据库服务,它基于行业领先的 Microsoft SQL Server 引擎,能够处理任务关键型工作负荷。SQL 数据库在多个服务级别提供可预测的性能、支持在不停机的情况下进行缩放、内置业务连续性和数据保护所有这些功能几乎都不需要管理。凭借这些功能,用户可将注意力集中在如何快速进行应用开发、加快推向市场,而无需将宝贵的时间和资源投入在管理虚拟机和基础结构上。SQL 数据库基于 SQL Server 引擎,支持现有的 SQL Server 工具、库和 API。因此,无需学习新的技能,就能轻松开发新解决方案,迁移现有 SQL Server 解决方案,将现有 SQL Server 解决方案扩展到 Microsoft 云中。

即需要数据库时申请即可用,不用繁琐的安装数据库引擎,大大简化了运维工作。可以实现:

  • 可扩展到数千个数据库
  • 缩放自如可预测的性能
  • 通过副本和运行时服务级别协议提供可用性保障
  • 通过恢复和地域复制保护数据
  • 类似可编程 DBA 的功能,实现高效开发运营
  • 可自行管理,几乎无需人工维护

在云上我们也可以在虚拟机中安装 SQL 来提供数据库服务,与传统的 SQL 毫无差异,可以完整的将本地环境迁移到虚拟机中的 SQL 实例。

因此简单来说,Azure SQL 与虚拟机中 SQL Server 区别如下:

  • Azure SQL 数据库:云的本机 SQL 数据库,也称为平台即服务 (PaaS) 数据库或数据库即服务 (DBaaS),它已针对软件即服务 (SaaS) 应用开发进行优化。Azure SQL 数据库与大多数 SQL Server 功能兼容。
  • Azure 虚拟机上的 SQL Server:在 Azure 上运行的云中 Windows Server 虚拟机 (VM) 上安装并托管的 SQL Server,也称为基础结构即服务 (IaaS)。 Azure 虚拟机上的 SQL Server 经过优化,适合用于迁移现有的 SQL Server 应用程序。可以使用 SQL Server 的所有版本。它与 SQL Server 完全兼容,可用于托管任意数量的数据库,执行跨数据库事务。它提供对 SQL Server 和 Windows 的完全控制权。

下表总结了 Azure SQL SQL Server 的一些区别:

因此关于如何使用 Azure SQL 建议如下:

对于以下情况,请选择 Azure SQL 数据库

  • 打算构建全新的基于云的应用程序,以便利用云服务提供的成本节省和性能优化。此方法提供全面管理云服务的优势,有助于加速产品面市,并提供长期的成本效益。
  • 想让 Microsoft 在数据库上运行常见管理操作,因而数据库需要更高的可用性 SLA

对于以下情况,请选择 Azure VM 上的 SQL Server

  • 想要将现有本地应用程序迁移或扩展到云,或如果想要构建大于 1 TB 的企业应用程序。此方法的优点是提供 100% SQL 兼容性、大型数据库的容量、SQL Server Windows 的完整控制权以及本地的安全通道。此方法可以降低开发和修改现有应用程序的成本。
  • 有现有的 IT 资源,最终可以拥有修补、备份和数据库高可用性。请注意,某些自动化功能可大幅简化这些操作。

2. 创建一个Azure SQL

下面我们来创建一个 Azure SQL。

在 ARM Portal 下点击 SQL 数据库,点击添加,出现如下界面:

填写:

  • 数据库名称
  • 资源组
  • 是否使用空白数据库:可以使用模板创建一个示例数据库
  • 是否创建新服务器:承载SQL数据库的服务器资源
  • 是否使用弹性数据库:弹性数据库目的是提供弹性池来使用,目前创建独立数据库,之后专门来写弹性数据库
  • 定价层:选择的性能级别不一样,价格不一样。

点击创建,可以创建出数据库。如图:

数据库即已建好。

3.关于Azure SQL 数据库逻辑服务器

上节我们创建 Azure SQL 的时候,也创建了一台数据库服务器,如下图:

这是 Azure SQL 数据库逻辑服务器,是 Azure SQL 的中心管理点,我们使用 SSMS 连接数据库实例进行管理时,连接的是逻辑服务器。如图:

这台逻辑服务器上有 2 个数据库。

Azure SQL 数据库中,服务器是一个逻辑构造,它不同于在本地环境中的 SQL Server 实例。表面上我们看到的是一个SQL 实例,但区别主要是权限和功能的区别,在 Azure 上的逻辑服务器不会公开任何实例级的访问权限和功能。

Azure SQL 数据库中的每一个数据库都与逻辑服务器相关联,数据库可以是:

  • 单一数据库,具有其自己的资源集 (DTU);
  • 属于共享一组资源的数据库池 (eDTU);
  • 属于向外扩展的分片数据库集,可以是单一数据库或入池数据库;
  • 属于参与多租户 SaaS 设计模式的一组数据库,其数据库可以是单一数据库和/或入池数据库。

下表对 SQL Server 数据库与 Azure SQL 的功能进行了比较。此比较限制于目前的 azure SQL V12 版本,Azure SQL 会不断更新,因此功能也会加强。所以目前的不适用于未来,仅限于目前阶段。(更新于2017120日)

总结来说:

  1. Azure SQL Pass 层数据库,与 SQL Server 一脉相承,但是不是完整的 SQL Server 实例;
  2. 使用 Azure SQL 可以减少大量的运维工作,为使用付费;
  3. Azure SQL 与本地 SQL 使用基本相同,有一定兼容性问题,有工具进行相应测试。