Azure SQL 托管实例常见问题解答 (FAQ)

适用于: Azure SQL 托管实例

本文包含有关 Azure SQL 托管实例的最常见问题。

支持的功能

在何处可以找到 SQL 托管实例上受支持的功能列表?

有关SQL 托管实例中受支持的功能列表,请参阅 Azure SQL 托管实例功能

有关 Azure SQL 托管实例与 SQL Server 之间的语法和行为差异,请参阅 T-SQL 与 SQL Server 之间的差异

技术规范、资源限制和其他限制

在何处可以找到 SQL 托管实例的技术特征和资源限制?

有关可用硬件的代系特征,请参阅硬件代系的技术差异。 有关可用的服务层级及其特征,请参阅服务层级之间的技术差异

我有资格使用哪些服务层级?

任何客户都有资格使用所有服务层级。 但是,如果你要使用 Azure 混合权益交换现有许可证以在 Azure SQL 托管实例上获得折扣费率,请记住,具有软件保障的 SQL Server Enterprise Edition 客户有资格使用常规用途业务关键性能层,而具有软件保障的 SQL Server Standard Edition 客户仅有资格使用常规用途性能层。 有关更多详细信息,请参阅 AHB 的特定权限

支持哪些 Azure 区域?

可以在大多数 Azure 区域中创建托管实例;请参阅 SQL 托管实例支持的区域

SQL 托管实例部署是否有配额限制?

托管实例具有两个默认限制:对可以使用的子网数的限制,以及对可以预配的 vCore 数的限制。 限制在各种订阅类型和区域间有所不同。 有关按订阅类型列出的区域资源限制的列表,请参阅区域资源限制中的表。 这些是可以按需增加的软限制。

是否可以按需对托管实例增加数据库数限制 (100)?

不可以,当前没有已提交的计划来增加 SQL 托管实例的数据库数。

如果我有超过 8TB 的数据,可以迁移到何处?

可以考虑迁移到适合工作负载的其他 Azure 风格:Azure SQL 数据库超大规模Azure 虚拟机中的 SQL Server

如果我有特定硬件要求(如更大的 RAM 与 vCore 比率或更多 CPU),那么可以迁移到何处?

可以考虑迁移到内存/cpu 经过优化的 Azure 虚拟机中的 SQL ServerAzure SQL 数据库

已知问题和缺陷

在何处可以找到已知问题和缺陷?

有关产品缺陷和已知问题,请参阅已知问题

新增功能

在哪里可以找到最新功能和处于公共预览状态的功能?

对于新功能和预览功能,请参阅发行说明

创建、更新、删除或移动 SQL 托管实例

如何预配 SQL 托管实例?

可以通过 Azure 门户PowerShellAzure CLIARM 模板来预配实例。

为什么无法在名称以数字开头的子网中预配托管实例?

这是针对基本组件的一个当前限制,它会按照正则表达式 ^[a-zA-Z_][^\/:*?"<>|`'^]*(?<![.\s])$ 验证子网名称。 当前支持所有通过正则表达式的名称以及有效的子网名称。

如何缩放托管实例?

可以通过 Azure 门户PowerShellAzure CLIARM 模板来缩放托管实例。

是否可以将托管实例从一个区域移动到另一个区域?

可以。 有关说明,请参阅跨区域移动资源

如何删除托管实例?

可以通过 Azure 门户、PowerShellAzure CLI资源管理器 REST API 来删除托管实例。

创建或更新实例或还原数据库需要多长时间?

创建新托管实例或更改服务层级(vCore、存储)的预期时间取决于多个因素。 请参阅管理操作

命名约定

托管实例是否可与 SQL Server本地实例同名?

不支持更改托管实例名称。

是否可以更改 DNS 区域前缀?

是的,可以更改托管实例默认 DNS 区域 .database.chinacloudapi.cn。

若要使用其他 DNS 区域而不是默认区域(例如“.contoso.com”),请执行以下操作:

  • 使用 CliConfig 定义别名。 该工具只是一个注册表设置包装器,因此也可以使用组策略或脚本完成此操作。
  • 将 CNAME 与 TrustServerCertificate=true 选项一起使用 。

迁移选项

如何从 Azure SQL 数据库单一池或弹性池迁移到 SQL 托管实例?

托管实例根据计算和存储大小提供与其他 Azure SQL 数据库部署选项相同的性能级别。 若要在单一实例上合并数据,或者只是需要一种仅在托管实例中受支持的功能,可以使用导出/导入 (BACPAC) 功能来迁移数据。 下面是将 SQL 数据库迁移到 SQL 托管实例时可考虑的其他方法:

如何将实例数据库迁移到单个 Azure SQL 数据库?

一种做法是将数据库导出到 BACPAC,然后导入 BACPAC 文件。 如果数据库小于 100 GB,则建议使用此方法。

如果数据库中的所有表具有主键,并且数据库中没有内存中 OLTP 对象,则可以使用事务复制

由于托管实例的数据库版本高于 SQL Server,因此无法将从托管实例创建的本机 COPY_ONLY 备份还原到 SQL Server。 有关更多详细信息,请参阅仅复制备份

如何将 SQL Server 实例迁移到 SQL 托管实例?

若要迁移 SQL Server 实例,请参阅将 SQL Server 实例迁移到 Azure SQL 托管实例

如何从其他平台迁移到 SQL 托管实例?

有关从其他平台迁移的迁移信息,请参阅 Azure 数据库迁移指南

切换硬件代系

能否在第 4 代和第 5 代托管实例硬件代系之间联机切换?

如果第 5 代可以在预配托管实例的区域中使用,则可以自动联机从第 4 代切换到第 5 代。 在这种情况下,可以查看“vCore 模型概述”页,该页说明了如何在硬件代系之间切换。

这是一个长时间运行的操作,因为新托管实例将在后台预配,数据库将在旧实例与新实例之间自动转移,该过程结束时,可以快速故障转移。

注意:第 4 代硬件正在逐步被淘汰,不能再用于新部署。 所有新的数据库都必须部署在第 5 代硬件上。 也无法从第 5 代切换到第 4 代。

性能

如何将托管实例性能与 SQL Server 性能进行比较?

若要在托管实例与 SQL Server 之间进行性能比较,可以从有关 Azure SQL 托管实例与 SQL Server 之间的性能比较的最佳做法一文入手。

导致托管实例与 SQL Server 之间存在性能差异的原因是什么?

请参阅 SQL 托管实例与 SQL Server 之间存在性能差异的主要原因。 有关日志文件大小对常规用途托管实例性能的影响的详细信息,请参阅日志文件大小对常规用途的影响

如何优化托管实例的性能?

可以通过以下方式优化托管实例的性能:

如何进一步优化常规用途托管实例的性能?

若要提高常规用途实例的性能,请考虑增加数据文件大小。 若要优化常规用途实例的存储性能,请参阅常规用途层的存储最佳实践指南

查询持续时间过长。 如何分析托管实例的等待统计信息?

请参阅分析 SQL 托管实例的等待统计信息。 等待统计信息可以帮助你理解查询持续时间长的原因,并标识正在数据库引擎中等待的查询。

监视、指标和警报

对于托管实例,监视和警报方面有哪些选项?

有关对 SQL 托管实例消耗和性能进行监视和警报的所有可能选项,请参阅 Azure SQL 托管实例监视选项博客文章。 有关 SQL MI 的实时性能监视,请参阅 Azure SQL 数据库托管实例的实时性能监视

如何监视托管实例的实时性能?

请参阅 Azure SQL DB 托管实例的实时性能监视

是否可以使用 SQL Profiler 进行性能跟踪?

是的,SQL 托管实例支持 SQL Profiler。 有关详细信息,请参阅 SQL Profiler

托管实例数据库是否支持数据库顾问和 Query Performance Insight?

不支持。 可以将 DMV查询存储SQL ProfilerXEvent 结合使用来监视数据库。

如何监视托管实例的 CPU 使用率?

请参阅监视 SQL Server 和 Azure SQL 上的 CPU 使用率

是否可以在 SQL 托管实例上创建指标警报?

是的。 有关说明,请参阅为 SQL 托管实例创建警报。 有关更多提示和技巧,请参阅此博客

是否可以在托管实例中的数据库上创建指标警报?

不可以,警报指标仅适用于托管实例。 警报指标不适用于托管实例中的单个数据库。

存储大小

SQL 托管实例的最大存储大小是多少?

SQL 托管实例的存储大小取决于所选的服务层级(“常规用途”或“业务关键”)。 有关这些服务层级的存储限制,请参阅服务层级特征

可用于托管实例的最小存储大小是多少?

实例中可用的最小存储量为 32 GB。 可以按 32 GB 的增量添加存储,直到达到最大存储大小。 第一个 32GB 是免费的。

是否可以独立于计算资源来增加分配给实例的存储空间?

是的,可以在一定范围内,独立于计算购买附加存储。 请参阅该中的最大实例预留存储。

如何在常规用途服务层级中优化存储性能?

若要优化存储性能,请参阅常规用途中的存储最佳做法

备份和还原

备份存储是否是从托管实例存储中扣减出来的?

不是,备份存储不是从托管实例的存储空间中扣减出来的。 备份存储与实例存储空间无关,其大小不受限制。 备份存储受实例数据库备份的保留期限(可配置为最多 35 天)的限制。 有关详细信息,请参阅自动化备份

如何查看何时对托管实例进行自动备份?

若要跟踪何时对托管实例执行自动备份,请参阅如何跟踪 Azure SQL 托管实例的自动备份

是否支持按需备份?

是的,可以在其 Azure Blob 存储中创建仅复制完整备份,但它只能在托管实例中进行还原。 有关详细信息,请参阅仅复制备份。 但是,如果数据库通过服务管理的 TDE 进行加密,则无法进行仅复制备份,因为用于加密的证书不可访问。 在这类情况下,使用时间点还原功能将数据库移到另一个 SQL 托管实例或切换到客户管理的密钥。

是否支持本机还原(从 .bak 文件)到托管实例?

是的,该功能受支持,可用于 SQL Server 2005 以上版本。 若要使用本机还原,请将 .bak 文件上传到 Azure blob 存储并执行 T-SQL 命令。 有关更多详细信息,请参阅从 URL本机还原

业务连续性

系统数据库是否会复制到故障转移组中的辅助实例?

系统数据库不会复制到故障转移组中的辅助实例。 因此,除非在辅助实例上手动创建对象,否则依赖于系统数据库中的对象的方案将不可能在辅助实例上出现。 有关解决方法,请参阅启用依赖于系统数据库中的对象的方案。  

网络要求

托管实例子网上的当前入站/出站 NSG 约束有哪些?

所需 NSG 和 UDR 规则记录在此处,由服务自动设置。 请记住,这些规则只是维护服务所需的规则。 若要连接到托管实例并使用不同的功能,需要设置需要维护的特定于功能的附加规则。

如何针对管理端口设置入站 NSG 规则?

SQL 托管实例负责对管理端口设置规则。 这通过名为服务辅助的子网配置的功能来实现。 这是为了确保不中断管理流量的流动,以便满足 SLA。

是否可以获取用于入站管理流量的源 IP 范围?

是的。 可以通过配置网络观察程序流日志来分析经过网络安全组的流量。

是否可以设置 NSG 以便控制对数据终结点(端口 1433)的访问?

是的。 预配托管实例之后,可以设置控制对端口 1433 的入站访问的 NSG。 建议尽可能缩小其 IP 范围。

是否可以设置 NVA 或本地防火墙以基于 FQDN 筛选出站管理流量?

否。 由于以下几个原因,不支持此功能:

  • 表示对入站管理请求的响应的路由流量是非对称的,无法正常工作。
  • 转到存储的路由流量受到吞吐量约束和延迟的影响,因此,我们无法提供预期的服务质量和可用性。
  • 根据经验,这些配置容易出错,不受支持。

是否可以为出站非管理流量设置 NVA 或防火墙?

是的。 实现此功能的最简单方法是将 0/0 规则添加到与托管实例子网关联的 UDR,以通过 NVA 路由流量。

托管实例需要多少 IP 地址?

子网必须有足够数量的可用 IP 地址。 若要确定 SQL 托管实例的 VNet 子网大小,请参阅确定托管实例所需的子网大小和范围

如果没有足够的 IP 地址来执行实例更新操作怎么办?

如果预配托管实例的子网中没有足够的 IP 地址,需要创建一个新的子网并在其中创建新的托管实例。 同时建议在创建新的子网时分配更多 IP 地址,以免在将来的更新操作中遇到类似情况。 预配新实例后,可以在新旧实例之间手动备份和还原数据,或执行跨实例时间点还原

是否需要空子网来创建托管实例?

否。 可以使用控子网或是已包含托管实例的子网。

是否可以更改子网地址范围?

如果其中有托管实例,则不可以。 这是一种 Azure 网络基础结构限制。 只允许向空子网添加其他地址空间

是否可以将托管实例移动到另一个子网?

否。 这是当前托管实例设计限制。 但是,可以在另一个子网中预配新实例,并在旧实例与新实例之间手动备份和还原数据,或执行跨实例的时间点还原

是否需要空虚拟网络来创建托管实例?

这不是必需的。 可以为 Azure SQL 托管实例创建虚拟网络或是为 Azure SQL 托管实例配置现有虚拟网络

是否可以将托管实例与其他服务一起放入子网?

否。 我们当前不支持将托管实例放置在已包含其他资源类型的子网中。

连接

是否可以使用 IP 地址连接到托管实例?

否,不支持这样做。 托管实例主机名会映射到托管实例虚拟群集前面的负载均衡器。 由于一个虚拟群集可以托管多个托管实例,因此如果不指定名称,则无法将连接路由到正确的托管实例。 有关 SQL 托管实例虚拟群集体系结构的详细信息,请参阅虚拟群集连接体系结构

托管实例是否可以使用静态 IP 地址?

目前不支持。

在罕见但必要的情况下,我们可能需要将托管实例联机迁移到新的虚拟群集。 需要进行这种迁移的原因是,我们的技术堆栈发生了变化,旨在提高服务的安全性和可靠性。 迁移到新的虚拟群集会导致映射到托管实例主机名的 IP 地址发生变化。 托管实例服务不会提出静态 IP 地址支持,且有权在不另行通知的情况下,在定期维护周期更改此 IP 地址。

出于此原因,我们强烈反对依赖于 IP 地址的不可变性,因为这可能会导致不必要的停机时间。

托管实例是否具有公共终结点?

是的。 托管实例具有一个公共终结点,它在默认情况下仅用于服务管理,但客户也可以启用它来访问数据。 有关更多详细信息,请参阅将 SQL 托管实例与公共终结点一起使用。 若要配置公共终结点,请转到在 SQL 托管实例中配置公共终结点

托管实例如何控制对公共终结点的访问?

托管实例会在网络和应用程序级别控制对公共终结点的访问。

管理和部署服务使用映射到外部负载均衡器的管理终结点连接到托管实例。 仅当流量是在一组专用于托管实例管理组件的预定义端口上收到的时,才将流量路由到节点。 节点上的内置防火墙设置为只允许来自 Microsoft IP 范围的流量。 证书将对管理组件与管理平面之间的所有通信进行相互身份验证。 有关更多详细信息,请参阅 SQL 托管实例的连接体系结构

是否可以使用公共终结点访问托管实例数据库中的数据?

是的。 客户需要通过 Azure 门户 / PowerShell / ARM 来启用公共终结点数据访问,并将 NSG 配置为锁定对数据端口(端口号 3342)的访问。 有关详细信息,请参阅在 Azure SQL 托管实例中配置公共终结点安全地将 Azure SQL 托管实例与公共终结点结合使用

是否可以为 SQL 数据终结点指定自定义端口?

不可以,此选项不可用。 对于专用数据终结点,托管实例使用默认端口号 1433;对于公共数据终结点,托管实例使用默认端口号 3342。

快速路由线路对等互连是执行该操作的首选方式。 支持全局虚拟网络对等互连,但有以下说明所述的限制。

重要

2020 年 9 月 22 日,我们宣布了为新建的虚拟群集建立全局虚拟网络对等互连。 这意味着,自公告日期之后在空子网中创建的 SQL 托管实例以及在这些子网中随后创建的所有托管实例,都支持全局虚拟网络对等互连。 对于所有其他 SQL 托管实例,由于全局虚拟网络对等互连的约束,对等互连支持仅限于同一区域中的网络。 有关更多详细信息,另请参阅 Azure 虚拟网络常见问题解答一文的相关部分。

如果无法实现 Express Route 线路对等互连和全局虚拟网络对等互连,那么唯一的选择就是创建站点到站点 VPN 连接(Azure 门户PowerShellAzure CLI)。

缓解数据透露风险

如何缓解数据透露风险?

为了缓解任何数据透露风险,我们建议客户应用一组安全设置和控制:

  • 在所有数据库上启用透明数据加密 (TDE)
  • 关闭公共语言运行时 (CLR)。 也建议在本地禁用 CLR。
  • 仅使用 Azure Active Directory (Azure AD) 身份验证。
  • 使用低特权 DBA 帐户访问实例。
  • 为 sysadmin 帐户配置 JiT jumpbox 访问权限。
  • 启用 SQL 审核,并将其与警报机制相集成。
  • Azure Defender for SQL 套件启用威胁检测

DNS

是否可以为 SQL 托管实例配置自定义 DNS?

是的。 请参阅如何为 Azure SQL 托管实例配置自定义 DNS

是否可以执行 DNS 刷新?

是的。 请参阅在 SQL 托管实例虚拟群集上同步虚拟网络 DNS 服务器设置

更改时区

是否可以更改现有托管实例的时区?

首次预配托管实例时可以设置时区配置。 不支持更改现有托管实例的时区。 有关详细信息,请参阅时区限制

解决方法包括使用适当的时区创建新的托管实例,然后执行手动备份和还原,我们建议执行跨实例时间点还原

安全性和数据库加密

sysadmin 服务器角色是否可用于 SQL 托管实例?

是的,客户可以创建作为 sysadmin 角色成员的登录名。 承担 sysadmin 权限的客户也负责操作实例,这会对 SLA 承诺产生负面影响。 若要将登录名添加到 sysadmin 服务器角色,请参阅 Azure AD 身份验证

SQL 托管实例是否支持透明数据加密?

是的,SQL 托管实例支持透明数据加密。 有关详细信息,请参阅 SQL 托管实例的透明数据加密

是否可以对 TDE 使用“创建自己的密钥”模型?

是的,适用于 BYOK 的 Azure Key Vault 方案可用于 Azure SQL 托管实例。 有关详细信息,请参阅使用客户管理的密钥进行透明数据加密

是否可以迁移加密 SQL Server 数据库?

可以。 若要迁移加密 SQL Server 数据库,需要将现有证书导出并导入到托管实例中,然后执行完整数据库备份并在托管实例中进行还原。

还可以使用 Azure 数据库迁移服务迁移 TDE 加密数据库。

如何为 SQL 托管实例配置 TDE 保护程序轮换?

可以使用 Azure Cloud Shell 为托管实例轮换 TDE 保护程序。 有关说明,请参阅使用 Azure Key Vault 中自己的密钥在 SQL 托管实例中实现透明数据加密

是否可将加密的数据库还原到 SQL 托管实例?

可以,无需解密数据库即可将其还原到 SQL 托管实例。 需将一个在源系统中用作加密密钥保护器的证书/密钥提供给 SQL 托管实例,才能从加密的备份文件中读取数据。 要运行此操作有两个可行的方式:

  • 将证书保护器上传到 SQL 托管实例。 只能使用 PowerShell 执行此操作。 示例脚本描述了整个过程。
  • 将非对称密钥保护器上传到 Azure Key Vault,并将 SQL 托管实例指向该保护器。 此方法类似于自带密钥 (BYOK) TDE 用例,该用例也使用 Key Vault 集成来存储加密密钥。 如果你不想将该密钥用作加密密钥保护器,只想为 SQL 托管实例提供密钥来还原加密的数据库,请按照有关设置 BYOK TDE 的说明进行操作,不要选中“将所选密钥设为默认 TDE 保护器”复选框。

将加密保护器提供给 SQL 托管实例使用后,可以继续执行标准的数据库还原过程。

购买模型和权益

SQL 托管实例有哪些购买模型?

SQL 托管实例提供基于 vCore 的购买模型

SQL 托管实例有哪些成本权益?

可通过以下方式使用 Azure SQL 权益来节省成本:

  • 利用 Azure 混合权益,最大化本地许可证的现有投资并节省高达 55%。

托管实例和备份存储计费

SQL 托管实例定价选项有哪些?

若要浏览托管实例定价选项,请参阅定价页

自动备份的成本是多少?

不管备份保持期设置如何,都可以获得与购买的预留数据存储空间相等的可用备份存储空间量。 如果备份存储消耗在分配的可用备份存储空间内,则托管实例上的自动备份不会产生额外费用,因此是免费的。 超过可用空间使用的备份存储所产生的费用以每月每 GB 约 1.5 元的费率计算。你也可以参阅定价页,了解所在地区的详细信息。

有关节省成本的用例

在何处可以找到用例,以及通过 SQL 托管实例可实现的成本节省?

SQL 托管实例案例研究:

密码策略

对于 SQL 托管实例 SQL 登录名,可应用什么密码策略?

用于 SQL 登录名的 SQL 托管实例密码策略沿袭了Azure 平台策略,该策略应用于构成保存托管实例的虚拟群集的 VM。 目前不能更改这些设置,因为这些设置由 Azure 定义并由托管实例继承。

重要

Azure 平台可能会更改策略要求,且不会通知依赖于该策略的服务。

当前的 Azure 平台策略是什么?

每个登陆者必须在登录时设置其密码,并在达到最长密码期限后更改其密码。

策略 安全设置
最长密码期限 42 天
最短密码期限 1 天
最短密码长度 10 个字符
密码必须符合复杂性要求 Enabled

是否可以在登录级别禁用 SQL 托管实例中的密码复杂性和过期时间?

是的,可以在登录级别控制 CHECK_POLICY 和 CHECK_EXPIRATION 字段。 可以执行以下 T-SQL 命令来检查当前设置:

SELECT *
FROM sys.sql_logins

之后,可以执行以下操作来修改指定的登录设置:

ALTER LOGIN <login_name> WITH CHECK_POLICY = OFF;
ALTER LOGIN <login_name> WITH CHECK_EXPIRATION = OFF;

(将“test”替换为所需的登录 ID,并调整策略和过期时间值)

服务更新

什么是 SQL 托管实例的计划内维护事件?

请参阅在 SQL 托管实例中计划 Azure 维护事件