Azure SQL 数据库与 SQL Server 共享一个通用代码库。 在 SQL server 和 Azure SQL 数据库中, 大多数标准 SQL 功能是相同的。 SQL Server 和所有类型的 Azure SQL 数据库中常见的功能如下:
- 语言功能-控制流语言关键字、游标、数据类型、 DML 语句、谓词、序列号、存储过程和变量。
- 数据库功能-自动优化 (计划强制)、更改跟踪、数据库排序规则、包含的数据库、包含的用户、数据压缩、数据库配置设置联机索引操作、分区和临时表(请参阅入门指南)。
- 安全功能-应用程序角色、动态数据掩码(参阅入门指南)、行级别安全性和威胁检测-请参阅单一数据库和弹性池的入门指南和托管实例。
- 多模型功能-图形处理、 JSON 数据(请参阅入门指南)、 OPENXML、空间、 OPENJSON和XML 索引。
数据库功能取决于你创建的 Azure SQL 数据库的类型。 下表中描述了这些功能。 使用 Azure SQL 数据库,可以作为托管实例、单一数据库或弹性池的一部分创建一个数据库。 如需有关差异的更多详细信息,请查看单一数据库和弹性池或托管实例中的相关页面。
SQL 功能
下表列出了 SQL Server 的主要功能,并说明该功能在托管实例或单一数据库和弹性池中是部分受支持还是完全受支持,同时提供了该功能的详细信息链接。
SQL 功能 | 单一数据库和弹性池 | 托管实例 |
---|---|---|
Always Encrypted | 是 - 请参阅证书存储和密钥保管库 | 是 - 请参阅证书存储和密钥保管库 |
Always On 可用性组 | 每个数据库均包含高可用性。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论 | 每个数据库附带高可用性,不可由用户更改。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论 |
附加数据库 | 否 | 否 |
审核 | 是 | 是,但有一些差异 |
Azure Active Directory (AAD) 身份验证 | 是的。 仅限 AAD 用户。 | 是的。 包括服务器级别 AAD 登录名。 |
备份命令 | 否,仅系统启动的自动备份 - 请参阅自动备份 | 是,用户发起的仅将备份复制到 Azure Blob 存储的操作(用户无法发起自动系统备份)- 请参阅备份差异 |
内置函数 | 大多数 - 请参阅单个函数 | 是 - 请参阅存储过程、函数和触发器差异 |
BULK INSERT 语句 | 是,但是只能从充当源的 Azure Blob 存储进行。 | 是,但是只能从充当源的 Azure Blob 存储进行 - 请参阅差异。 |
证书和非对称密钥 | 是,无法访问文件系统完成 BACKUP 和 CREATE 操作。 | 是,无法访问文件系统完成 BACKUP 和 CREATE 操作 - 请参阅证书差异。 |
变更数据捕获-CDC | 否 | 是 |
排序规则 - 服务器/实例 | 否,始终使用默认的逻辑服务器排序规则 SQL_Latin1_General_CP1_CI_AS 。 | 是,可以在创建实例时设置,以后不可更新。 |
列存储索引 | 是 - 高级层、标准层 - S3 及以上层、常规用途层和业务关键层 | 是 |
公共语言运行时-CLR | 否 | 是,但无权在 CREATE ASSEMBLY 语句中访问文件系统 - 请参阅 CLR 差异 |
凭据 | 是,但是仅限数据库范围的凭据。 | 是,但仅支持 Azure Key Vault 和 SHARED ACCESS SIGNATURE ,请参阅详细信息 |
跨数据库/三部分名称查询 | 否 - 请参阅弹性查询 | 是,外加弹性查询 |
跨数据库事务 | 否 | 是,在实例中。 对于跨实例查询,请参阅链接服务器的差异。 |
数据库邮件-DbMail | 否 | 是 |
数据库镜像 | 否 | 否 |
数据库快照 | 否 | 否 |
DBCC 语句 | 大多数 - 请参阅单个语句 | 是 - 请参阅 DBCC 差异 |
DDL 语句 | 大多数 - 请参阅单个语句 | 是 - 请参阅 T-SQL 差异 |
DDL 触发器 | 仅数据库 | 是 |
分布式分区视图 | 否 | 是 |
分布式事务 - MS DTC | 否 - 请参阅弹性事务 | 否 - 请参阅链接服务器的差异 |
DML 触发器 | 大多数 - 请参阅单个语句 | 是 |
DMV | 大多数 - 请参阅单个 DMV | 是 - 请参阅 T-SQL 差异 |
事件通知 | 否 - 请参阅警报 | 否 |
表达式 | 是 | 是 |
扩展事件 (XEvent) | 部分 - 请参阅 SQL 数据库中的扩展事件 | 是 - 请参阅扩展事件的差异 |
扩展的存储过程 | 否 | 否 |
文件和文件组 | 仅限主文件组 | 是的。 文件路径是自动分配的,不能在 ALTER DATABASE ADD FILE 语句中指定文件位置。 |
文件流 | 否 | 否 |
全文搜索 (FT 数) | 是,但不支持第三方断字符 | 是,但不支持第三方断字符 |
函数 | 大多数 - 请参阅单个函数 | 是 - 请参阅存储过程、函数和触发器差异 |
内存中优化 | 是-高级和业务关键层仅对非持久性内存中对象 (如表类型) 的支持有限 | 是 - 仅限业务关键层 |
语言元素 | 大多数 - 请参阅单个元素 | 是 - 请参阅 T-SQL 差异 |
链接服务器 | 否 - 请参阅弹性查询 | 是的。 仅适用于没有分布式事务的 SQL Server 和 SQL 数据库。 |
从文件 (CSV, Excel) 读取的链接服务器 | 否。 使用BULK INSERT或OPENROWSET作为 CSV 格式的替代方法。 | 否。 使用BULK INSERT或OPENROWSET作为 CSV 格式的替代方法。 在托管实例反馈项上跟踪此请求 |
日志传送 | 每个数据库均包含高可用性。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论 | 原生作为 DMS 迁移过程的一部分内置。 不可用作高可用性解决方案,因为每个数据库都附带其他高可用性方法,并且我们不建议使用日志传送作为高可用性替代方案。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论。 不可用作数据库之间的复制机制 - 请使用业务关键层、自动故障转移组或事务复制中的辅助副本作为替代方案。 |
登录名和用户 | 是,但是 CREATE 和 ALTER 登录语句不提供所有选项(没有 Windows 和服务器级别 Azure Active Directory 登录名)。 不支持 EXECUTE AS LOGIN - 请改用 EXECUTE AS USER 。 | 是,但有一些差异。 不支持 Windows 登录名,应将其替换为 Azure Active Directory 登录名。 |
批量导入中的最小日志记录 | 否, 仅支持完整恢复模式。 | 否, 仅支持完整恢复模式。 |
修改系统数据 | 否 | 是 |
OLE 自动化 | 否 | 否 |
OPENDATASOURCE | 否 | 是,仅适用于其他 Azure SQL 数据库和 SQL Server。 请参阅 T-SQL 差异 |
OPENQUERY | 否 | 是,仅适用于其他 Azure SQL 数据库和 SQL Server。 请参阅 T-SQL 差异 |
OPENROWSET | 是,只是为了从 Azure Blob 存储导入。 | 是,仅适用于其他 Azure SQL 数据库和 SQL Server,以及从 Azure Blob 存储进行导入的操作。 请参阅 T-SQL 差异 |
运算符 | 大多数 - 请参阅单个运算符 | 是 - 请参阅 T-SQL 差异 |
Polybase | 否。 可以使用 OPENROWSET 函数查询 Azure Blob 存储上的文件中的数据。 | 否。 可以使用 OPENROWSET 函数查询 Azure Blob 存储上的文件中的数据。 |
查询通知 | 否 | 是 |
R 服务 | 是,处于公开预览状态 | 否 |
恢复模式 | 仅支持保证高可用性的完全恢复。 简单和大容量日志恢复模式不可用。 | 仅支持保证高可用性的完全恢复。 简单和大容量日志恢复模式不可用。 |
资源调控器 | 否 | 是 |
RESTORE 语句 | 否 | 是,对 Azure Blob 存储上的备份文件使用必需的 FROM URL 选项。 请参阅还原差异 |
从备份还原数据库 | 仅从自动备份 - 请参阅 SQL 数据库恢复 | 从自动备份 - 请参阅 SQL 数据库恢复;从 Azure Blob 存储中的完整备份 - 请参阅备份差异 |
将数据库还原到 SQL Server | 否。 使用 BACPAC 或 BCP 而不是本机还原。 | 否,因为托管实例中使用的 SQL Server 数据库引擎的版本高于本地使用的任何 SQL Server RTM 版本。 请改用 BACPAC、BCP 或事务复制。 |
语义搜索 | 否 | 否 |
Service Broker | 否 | 是,但仅限在实例中。 请参阅 Service Broker 差异 |
服务器配置设置 | 否 | 是 - 请参阅 T-SQL 差异 |
SET 语句 | 大多数 - 请参阅单个语句 | 是 - 请参阅 T-SQL 差异 |
SQL Server 代理 | 否 - 请参阅弹性作业 | 是 - 请参阅 SQL Server 代理差异 |
SQL Server 审核 | 否 - 请参阅 SQL 数据库审核 | 是 - 请参阅审核差异 |
系统存储函数 | 大多数 - 请参阅单个函数 | 是 - 请参阅存储过程、函数和触发器差异 |
系统存储过程 | 部分 - 请参阅单个存储过程 | 是 - 请参阅存储过程、函数和触发器差异 |
系统表 | 部分 - 请参阅单个表 | 是 - 请参阅 T-SQL 差异 |
系统目录视图 | 部分 - 请参阅单个视图 | 是 - 请参阅 T-SQL 差异 |
TempDB | 是的。 每个数据库的每个核心为 32GB 大小。 | 是的。 整个 GP 层的每个 vCore 为 24GB 大小,受 BC 层上的实例大小限制 |
临时表 | 本地和数据库范围的全局临时表 | 本地和实例范围的全局临时表 |
时区选择 | 否 | 是,必须在创建托管实例时配置。 |
跟踪标志 | 否 | 是, 但仅限有限的全局跟踪标志集。 请参阅DBCC 差异 |
事务复制 | 是,仅限事务性和快照复制订户 | 是,目前为公共预览版。 请参阅此处的约束。 |
透明数据加密 (TDE) | 是 - 仅限“常规用途”和“业务关键”服务层级 | 是 |
Windows 身份验证 | 否 | 否 |
Windows Server 故障转移群集 | 否。 每个数据库附带提供高可用性的其他技术。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论 | 否。 每个数据库附带提供高可用性的其他技术。 简要介绍如何使用 Azure SQL 数据库确保业务连续性中对灾难恢复进行了讨论 |
平台功能
Azure 平台提供许多 PaaS 功能,可以增大标准数据库功能的价值。 可将许多外部服务与 Azure SQL 数据库服务配合使用。
平台功能 | 单一数据库和弹性池 | 托管实例 |
---|---|---|
活动异地复制 | 是 - 除超大规模之外的所有服务层级 | 否,请参阅用作替代方案的自动故障转移组(预览版) |
自动故障转移组 | 是 - 除超大规模之外的所有服务层级 | 是,处于公开预览状态 |
自动缩放 | 是, 在无服务器模型中 | 不需要, 你需要选择 "保留计算和存储"。 |
自动备份 | 是的。 完整备份每 7 天一次,差异备份每 12 小时一次,日志备份每 5-10 分钟一次。 | 是的。 完整备份每 7 天一次,差异备份每 12 小时一次,日志备份每 5-10 分钟一次。 |
自动优化(索引) | 是 | 否 |
Azure 资源运行状况 | 是 | 否 |
备份保留 | 是的。 默认值为7天, 最长35天。 | 是的。 默认值为7天, 最长35天。 |
数据迁移服务 (DMS) | 是 | 是 |
文件系统访问 | 否。 使用BULK INSERT或OPENROWSET作为替代方法, 访问和加载 Azure Blob 存储中的数据。 | 否。 使用BULK INSERT或OPENROWSET作为替代方法, 访问和加载 Azure Blob 存储中的数据。 |
异地还原 | 是 - 除超大规模之外的所有服务层级 | 是 - 使用 Azure PowerShell。 |
超大规模体系结构 | 是 | 否 |
长期备份保留 - LTR | 是,将自动创建的备份最长保留 10 年。 | 还不可以。 使用 COPY_ONLY 手动备份作为临时解决方法。 |
暂停/继续 | 是, 在无服务器模型中 | 否 |
基于策略的管理 | 否 | 否 |
公用 IP 地址 | 是的。 访问权限可以使用防火墙或服务终结点来限制。 | 是的。 需要显式启用,且必须在 NSG 规则中启用端口 3342。 可根据需要禁用公共 IP。 有关更多详细信息,请参阅公共终结点。 |
数据库时间点还原 | 是 - 除超大规模之外的所有服务层级 - 请参阅 SQL 数据库恢复 | 是 - 请参阅 SQL 数据库恢复 |
资源池 | 是,用作弹性池 | 否。 单个托管实例可以有多个共享同一资源池的数据库。 托管实例不能共享资源。 |
增加或减少 (联机) | 是的, 你可以更改 DTU 或保留的 Vcore 或最大停机时间, 但停机时间最短。 | 是的, 你可以更改保留的 Vcore 或最大的存储, 但停机时间最短。 |
SQL Analytics | 是 | 是 |
SQL 数据同步 | 是 | 否 |
SQL Server Analysis Services (SSAS) | 否,Azure Analysis Services 是一项单独的 Azure 云服务。 | 否,Azure Analysis Services 是一项单独的 Azure 云服务。 |
SQL Server Integration Services (SSIS) | 是,使用 Azure 数据工厂 (ADF) 环境中的托管 SSIS ,其中程序包存储在由 Azure SQL 数据库承载的 SSISDB 中并在 Azure SSIS 集成运行时 (IR) 上执行,请参阅在 ADF 中创建 Azure-SSIS IR。 若要比较 SQL 数据库服务器和托管实例中的 SSIS 功能,请参阅比较 Azure SQL 数据库单一数据库/弹性池和托管实例。 | 是,使用 Azure 数据工厂 (ADF) 环境中的托管 SSIS ,其中程序包存储在由托管实例承载的 SSISDB 中并在 Azure SSIS 集成运行时 (IR) 上执行,请参阅在 ADF 中创建 Azure-SSIS IR。 若要比较 SQL 数据库和托管实例中的 SSIS 功能,请参阅比较 Azure SQL 数据库单一数据库/弹性池和托管实例。 |
SQL Server Reporting Services (SSRS) | 否 - 请参阅 Power BI | 否 - 请参阅 Power BI |
查询性能见解 (QPI) | 是 | 否。 使用 SQL Server Management Studio 和 Azure Data Studio 中的内置报告。 |
VNet | 部分支持,可以使用 VNet 终结点进行受限访问 | 是,托管实例注入到客户的 VNet 中。请参阅子网和 VNet |
VNet 服务终结点 | 是 | 否 |
工具
Azure SQL 数据库支持可帮助你管理数据的各种数据工具。
工具 | 单一数据库和弹性池 | 托管实例 |
---|---|---|
Azure 门户 | 是 | 是 |
Azure CLI | 是 | 是 |
Azure Data Studio | 是 | 是 |
Azure Powershell | 是 | 是 |
BACPAC 文件(导出) | 是 - 请参阅 SQL 数据库导出 | 是 - 请参阅 SQL 数据库导出 |
BACPAC 文件(导入) | 是 - 请参阅 SQL 数据库导入 | 是 - 请参阅 SQL 数据库导入 |
Data Quality Services (DQS) | 否 | 否 |
Master Data Services (MDS) | 否 | 否 |
SMO | 是 | 是,版本 150 |
SQL Server Data Tools (SSDT) | 是 | 是 |
SQL Server Management Studio (SSMS) | 是 | 是,18.0 和更高版本 |
SQL Server PowerShell | 是 | 是 |
SQL Server Profiler | 否 - 请参阅扩展事件 | 是 |
System Center Operations Manager-SCOM | 是 | 否 |
迁移方法
你可以使用不同的迁移方法在 SQL Server、单一数据库和托管实例数据库之间移动数据。 在运行迁移时, 某些方法处于联机状态, 并且选取在源上进行的所有更改, 而在脱机方法中, 你需要在迁移过程中停止正在修改源数据的工作负荷。
源 | 单一数据库和弹性池 | 托管实例 |
---|---|---|
SQL Server (本地、Add-azurevm、Amazon RDS) | 联机: 数据迁移服务 (DMS),事务复制 断开BACPAC 文件 (导入), BCP | 联机: 数据迁移服务 (DMS),事务复制 断开本机备份/还原, BACPAC 文件 (导入), BCP,快照复制 |
单一数据库 | 断开BACPAC 文件 (导入), BCP | 断开BACPAC 文件 (导入), BCP |
托管实例 | 联机: 事务复制 断开BACPAC 文件 (导入)、BCP、快照复制 | 联机: 事务复制 断开跨实例时间点还原 (Azure PowerShell或Azure CLI)、本机备份/还原、 BACPAC 文件 (导入)、BCP、快照复制 |