SQL Server 到 Azure SQL 托管实例迁移的评估规则

适用于: Azure SQL 托管实例

迁移工具通过运行多个评估规则来验证源 SQL Server 实例。 这些规则用于识别在将 SQL Server 数据库迁移到 Azure SQL 托管实例前必须要解决的问题。

本文列举了用于评估将 SQL Server 数据库迁移到 Azure SQL 托管实例的可行性的规则。

规则摘要

规则标题 Level 类别 详细信息
AnalysisCommandJob 实例 警告 AnalysisCommand 作业步骤在 Azure SQL 托管实例中不受支持。
AnalysisQueryJob 实例 警告 AnalysisQuery 作业步骤在 Azure SQL 托管实例中不受支持。
AssemblyFromFile 数据库 问题 带有文件参数的“CREATE ASSEMBLY”和“ALTER ASSEMBLY”在 Azure SQL 托管实例中不受支持。
BulkInsert 数据库 问题 使用非 Azure Blob 数据源的 BULK INSERT 在 Azure SQL 托管实例中不受支持。
ClrStrictSecurity 数据库 警告 标记为 SAFE 或 EXTERNAL_ACCESS 的 CLR 程序集被认为 UNSAFE。
ComputeClause 数据库 警告 不再支持 COMPUTE 子句,已将其删除。
CryptographicProvider 数据库 问题 发现使用 CREATE CRYPTOGRAPHIC PROVIDER 或 ALTER CRYPTOGRAPHIC PROVIDER。 Azure SQL 托管实例不支持此项。
DatabasePrincipalAlias 数据库 问题 不再支持并已删除 SYS.DATABASE_PRINCIPAL_ALIASES。
DbCompatLevelLowerThan100 数据库 警告 不支持低于 100 的数据库兼容性级别。
DisableDefCNSTCHK 数据库 问题 不再支持并已删除 SET 选项 DISABLE_DEF_CNST_CHK。
FastFirstRowHint 数据库 警告 不再支持并已删除 FASTFIRSTROW 查询提示。
FileStream 数据库 问题 文件流和 Filetable 在 Azure SQL 托管实例中不受支持。
LinkedServerWithNonSQLProvider 数据库 问题 Azure SQL 托管实例不支持将链接服务器用于非 SQL 提供程序。
MergeJob 实例 警告 合并作业步骤在 Azure SQL 托管实例中不受支持。
MIDatabaseSize 数据库 问题 Azure SQL 托管实例不支持超过 16 TB 的数据库大小。
MIHeterogeneousMSDTCTransactSQL 数据库 问题 Azure SQL 托管实例不支持对非 SQL Server 远程服务器使用 BEGIN DISTRIBUTED TRANSACTION。
MIHomogeneousMSDTCTransactSQL 数据库 问题 Azure SQL 托管实例支持跨多个服务器的 BEGIN DISTRIBUTED TRANSACTION。
MIInstanceSize 实例 警告 Azure SQL 托管实例中的实例最大存储大小不能超过 8 TB。
MultipleLogFiles 数据库 问题 Azure SQL 托管实例不支持包含多个日志文件的数据库。
NextColumn 数据库 问题 名为 NEXT 的表和列可导致 Azure SQL 托管实例发生错误。
NonANSILeftOuterJoinSyntax 数据库 警告 不再支持并已删除非 ANSI 样式左外部联接。
NonANSIRightOuterJoinSyntax 数据库 警告 不再支持并已删除非 ANSI 样式右外部联接。
NumDbExceeds100 实例 警告 每个 Azure SQL 托管实例最多支持 100 个数据库。
OpenRowsetWithNonBlobDataSourceBulk 数据库 问题 Azure SQL 托管实例不支持将批量操作中使用的 OpenRowSet 用于非 Azure Blob 存储数据源。
OpenRowsetWithNonSQLProvider 数据库 问题 Azure SQL 托管实例不支持将 OpenRowSet 用于非 SQL 提供程序。
PowerShellJob 实例 警告 PowerShell 作业步骤在 Azure SQL 托管实例中不受支持。
QueueReaderJob 实例 警告 队列读取器作业步骤在 Azure SQL 托管实例中不受支持。
RAISERROR 数据库 警告 应使用等效的新式调用替换旧式的 RAISERROR 调用。
SqlMail 数据库 警告 不再支持 SQL Mail。
SystemProcedures110 数据库 警告 检测到引用已删除的系统存储过程的语句,这些系统存储过程在 Azure SQL 托管实例中不可用。
TraceFlags 实例 警告 找到 Azure SQL 托管实例不支持的跟踪标志。
TransactSqlJob 实例 警告 TSQL 作业步骤包含 Azure SQL 托管实例不支持的命令。
WindowsAuthentication 实例 警告 通过 Windows 身份验证映射的数据库用户(集成安全性)在 Azure SQL 托管实例中不受支持。
XpCmdshell 数据库 问题 xp_cmdshell 在 Azure SQL 托管实例中不受支持。

AnalysisCommand 作业

标题:AnalysisCommand 作业步骤在 Azure SQL 托管实例中不受支持。
类别:警告

描述
这是用于运行 Analysis Services 命令的作业步骤。 AnalysisCommand 作业步骤在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用 Analysis Services 命令作业步骤的作业,并评估是否可以删除作业步骤或受影响的对象。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

AnalysisQuery 作业

标题:AnalysisQuery 作业步骤在 Azure SQL 托管实例中不受支持。
类别:警告

描述
这是用于运行 Analysis Services 查询的作业步骤。 AnalysisQuery 作业步骤在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用 Analysis Services 查询作业步骤的作业,并评估是否可以删除作业步骤或受影响的对象。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

文件中的程序集

标题:带有文件参数的“CREATE ASSEMBLY”和“ALTER ASSEMBLY”在 Azure SQL 托管实例中不受支持。
类别:问题

描述
Azure SQL 托管实例不支持带有文件参数的 CREATE ASSEMBLYALTER ASSEMBLY。 支持二进制参数。 有关在其中使用文件参数的特定对象,请参阅“受影响的对象”部分。

建议
使用带有文件参数的 CREATE ASSEMBLYALTER ASSEMBLY 查看对象。 如果任何此类对象是必需的,请将文件参数转换为二进制参数。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 CLR 差异

BULK INSERT

标题:使用非 Azure Blob 数据源的 BULK INSERT 在 Azure SQL 托管实例中不受支持。
类别:问题

描述
Azure SQL 托管实例无法访问文件共享或 Windows 文件夹。 请查看“受影响的对象”部分,了解 BULK INSERT 语句的特定用法,这些语句不引用 Azure Blob。 如果源不是 Azure Blob 存储,则在迁移到 Azure SQL 托管实例后,使用“BULK INSERT”的对象将无法工作。

建议
迁移到 Azure SQL 托管实例时,需要将 BULK INSERT 语句从使用本地文件或文件共享转换为使用 Azure Blob 存储中的文件。

详细信息:Azure SQL 托管实例中的批量插入和 OPENROWSET 差异

CLR 安全性

标题:标记为 SAFE 或 EXTERNAL_ACCESS 的 CLR 程序集被认为 UNSAFE
类别:警告

描述
Azure SQL 托管实例中强制实施 CLR 严格安全性模式。 此模式默认启用,并为包含用户定义的标记为 SAFE 或 EXTERNAL_ACCESS 的 CLR 程序集的数据库引入了中断性变更。

建议

CLR 在 .NET Framework 中使用代码访问安全性 (CAS)(不可再作为安全边界)。 使用 PERMISSION_SET = SAFE 创建的 CLR 程序集可以访问外部系统资源、调用非托管代码以及获取 sysadmin 特权。 在 SQL Server 2017 (14.x) 及更高版本中,sp_configure 选项 clr strict security 增强了 CLR 程序集的安全性。 默认启用 clr strict security,并将 SAFEEXTERNAL_ACCESS 程序集与标记为 UNSAFE 的程序集同等对待。 可禁用 clr strict security 选项以实现后向兼容性,但不建议这样做。

建议使用证书或非对称密钥签署所有程序集,且该证书或非对称密钥具有已在 UNSAFE ASSEMBLY 数据库中获得 master 权限的相应登录名。 SQL Server 管理员还可以将程序集添加到数据库引擎应信任的程序集列表。 有关详细信息,请参阅 sys.sp_add_trusted_assembly

COMPUTE 子句

标题:不再支持 COMPUTE 子句,已将其删除。
类别:警告

描述
COMPUTE 子句生成的总计在结果集的末尾显示为附加的汇总列。 但是,此子句在 Azure SQL 托管实例中不再受支持。

建议
需要改用 ROLLUP 运算符来重新编写 T-SQL 模块。 下面的代码演示如何将 COMPUTE 替换为 ROLLUP:

USE AdventureWorks2022;
GO

SELECT SalesOrderID,
    UnitPrice,
    UnitPriceDiscount
FROM Sales.SalesOrderDetail
ORDER BY SalesOrderID COMPUTE SUM(UnitPrice),
    SUM(UnitPriceDiscount) BY SalesOrderID;
GO

SELECT SalesOrderID,
    UnitPrice,
    UnitPriceDiscount,
    SUM(UnitPrice) AS UnitPrice,
    SUM(UnitPriceDiscount) AS UnitPriceDiscount
FROM Sales.SalesOrderDetail
GROUP BY SalesOrderID,
    UnitPrice,
    UnitPriceDiscount
WITH ROLLUP;

详细信息:SQL Server 中弃用的数据库引擎功能

Cryptographic provider

标题:已发现使用了 CREATE CRYPTOGRAPHIC PROVIDER 或 ALTER CRYPTOGRAPHIC PROVIDER,但这两个语句在 Azure SQL 托管实例中不受支持。
类别:问题

描述
Azure SQL 托管实例不支持 CRYPTOGRAPHIC PROVIDER 语句,因为它无法访问文件。 请查看“受影响的对象”部分,了解 CRYPTOGRAPHIC PROVIDER 语句的特定用法。 迁移到 Azure SQL 托管实例后,使用“CREATE CRYPTOGRAPHIC PROVIDER”或“ALTER CRYPTOGRAPHIC PROVIDER”的对象将无法工作。

建议
检查使用“CREATE CRYPTOGRAPHIC PROVIDER”或“ALTER CRYPTOGRAPHIC PROVIDER”的对象。 在必须使用的任何此类对象中,删除所使用的这些功能。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的加密提供程序差异

数据库兼容性

标题:不支持低于 100 的数据库兼容性级别
类别:警告

描述
数据库兼容性级别是一个非常有用的工具,借助该工具,可以在升级 SQL Server 数据库引擎的同时,通过保持与升级前相同的数据库兼容性级别来使连接应用程序保持正常运行状态,从而帮助实现数据库现代化。 Azure SQL 托管实例不支持低于 100 的兼容性级别。 如果在 Azure SQL 托管实例上还原兼容性级别低于 100 的数据库,则兼容性级别将升级到 100。

建议
在 Azure SQL 托管实例上将数据库兼容性级别升级到 100 后,评估应用程序功能是否完好无损。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中支持的兼容性级别

DATABASE_PRINCIPAL_ALIASES

标题:不再支持并已删除 SYS.DATABASE_PRINCIPAL_ALIASES。
类别:问题

描述
在 Azure SQL 托管实例中,不再支持并已删除 sys.database_principal_aliases

建议
请使用角色而不是别名。

详细信息:SQL Server 中弃用的数据库引擎功能

DISABLE_DEF_CNST_CHK 选项

标题:不再支持并已删除 SET 选项 DISABLE_DEF_CNST_CHK。
类别:问题

描述
在 Azure SQL 托管实例中,不再支持并已删除 SET 选项 DISABLE_DEF_CNST_CHK。

详细信息:SQL Server 中弃用的数据库引擎功能

FASTFIRSTROW 提示

标题:不再支持并已删除 FASTFIRSTROW 查询提示。
类别:警告

描述
在 Azure SQL 托管实例中,不再支持并已删除 FASTFIRSTROW 查询提示。

建议
FASTFIRSTROW 查询提示改用 OPTION (FAST n)。

详细信息:SQL Server 中弃用的数据库引擎功能

FILESTREAM

标题:文件流和 Filetable 在 Azure SQL 托管实例中不受支持。
类别:问题

描述
文件流功能使用户可以在 NTFS 文件系统中存储文档文档、图像和视频等非结构化数据,但此功能在 Azure SQL 托管实例中不受支持。 无法迁移此数据库,因为无法在 Azure SQL 托管实例上还原包含文件流文件组的备份。

建议
将非结构化文件上传到 Azure Blob 存储,并在 Azure SQL 托管实例中存储与这些文件相关的元数据(名称、类型、URL 位置、存储密钥等)。 可能需要对应用程序进行重新设计,以启用与 Azure SQL 托管实例的 Blob 流式传输。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:与 SQL Azure 的 Blob 流式传输博客

异类 MS DTC

标题:Azure SQL 托管实例不支持对非 SQL Server 远程服务器使用 BEGIN DISTRIBUTED TRANSACTION。
类别:问题

描述
如果远程服务器不是 SQL Server,则由 Transact SQL BEGIN DISTRIBUTED TRANSACTION 启动并由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的分布式事务 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看使用 BEGIN DISTRUBUTED TRANSACTION 的所有对象。 考虑将参与者数据库迁移到 Azure SQL 托管实例,其中支持跨多个实例的分布式事务。 有关详细信息,请参阅 Azure SQL 托管实例的跨多个服务器的事务

或者,迁移到 Azure VM 上的 SQL Server。

同源 MS DTC

标题:Azure SQL 托管实例支持跨多个服务器的 BEGIN DISTRIBUTED TRANSACTION。
类别:问题

描述
Azure SQL 托管实例支持由 Transact SQL BEGIN DISTRIBUTED TRANSACTION 启动并由 Microsoft 分布式事务处理协调器 (MS DTC) 管理的跨多个服务器的分布式事务。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看使用 BEGIN DISTRUBUTED TRANSACTION 的所有对象。 考虑将参与者数据库迁移到 Azure SQL 托管实例,其中支持跨多个实例的分布式事务。 有关详细信息,请参阅 Azure SQL 托管实例的跨多个服务器的事务

或者,迁移到 Azure VM 上的 SQL Server。

链接服务器(非 SQL 提供程序)

标题:Azure SQL 托管实例不支持将链接服务器用于非 SQL 提供程序。
类别:问题

描述
链接服务器使 SQL Server 数据库引擎可以对 SQL Server 实例外部的 OLE DB 数据源执行命令。 Azure SQL 托管实例不支持将链接服务器用于非 SQL 提供程序。

建议
如果远程服务器提供程序不是 SQL Server,而是 Oracle 或 Sybase 等,则 Azure SQL 托管实例不支持链接服务器功能。

建议执行以下操作以避免需要使用链接服务器:

  • 确定哪些从属数据库属于非 SQL 远程服务器,并考虑将它们移到要迁移的数据库中。
  • 将从属数据库迁移到受支持的目标,例如 SQL 托管实例、SQL 数据库、Azure Synapse 和 SQL Server 实例。
  • 考虑在 Azure SQL 托管实例和 Azure 虚拟机上的 SQL Server (SQL VM) 之间创建链接服务器。 然后在 SQL VM 和 Oracle 或 Sybase 等服务器之间创建链接服务器。此方法确实涉及两个跃点,但可用作临时解决方法。
  • 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的链接服务器差异

合并作业

标题:合并作业步骤在 Azure SQL 托管实例中不受支持。
类别:警告

描述
这是用于激活复制合并代理的作业步骤。 复制合并代理是一个将数据库表中保存的初始快照应用于订阅服务器的实用工具可执行文件。 它还合并自初始快照创建后发布服务器上发生的增量数据更改,并根据配置的规则或通过使用创建的自定义冲突解决程序来协调冲突。 合并作业步骤在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用合并作业步骤的作业,并评估是否可以删除作业步骤或受影响的对象。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

SQL 托管实例数据库大小

标题:Azure SQL 托管实例不支持超过 16 TB 的数据库大小。
类别:问题

描述
数据库大小超过实例的最大保留存储空间。 不能选择此数据库进行迁移,因为大小超出了允许的限制。

建议
评估数据是否可以存档、压缩或分片到多个数据库中。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例的硬件特性

SQL 托管实例实例大小

标题:Azure SQL 托管实例中的实例最大存储大小不能超过 8 TB。
类别:警告

描述
所有数据库的总大小超过实例的最大保留存储空间。

建议
如果所有数据库都必须在同一个实例上,则请考虑将数据库迁移到其他 Azure SQL 托管实例或 Azure 虚拟机上的 SQL Server。

详细信息:Azure SQL 托管实例的硬件特性

多个日志文件

标题:Azure SQL 托管实例不支持多个日志文件。
类别:问题

描述
SQL Server 允许数据库记录到多个文件。 此数据库具有多个日志文件,但 Azure SQL 托管实例不支持多个日志文件。 无法迁移此数据库,因为无法在 Azure SQL 托管实例上还原备份。

建议
Azure SQL 托管实例仅支持每个数据库一个日志。 将此数据库迁移到 Azure 之前,需要保留一个日志文件而删除其余所有日志文件:

ALTER DATABASE [database_name] REMOVE FILE [log_file_name]

详细信息:Azure SQL 托管实例中不支持的数据库选项

Next 列

标题:名为 NEXT 的表和列将导致 Azure SQL 托管实例发生错误。
类别:问题

描述
检测到名为 NEXT 的表或列。 Microsoft SQL Server 中引入的序列使用 ANSI 标准 NEXT VALUE FOR 功能。 如果表或列的名称为 NEXT,列的别名为带有省略 AS 的 ANSI 标准的 VALUE,则可能导致错误。

建议
在设置表或列的别名时重写语句以包含 ANSI 标准 AS 关键字。 例如,当列名为 NEXT 且该列的别名为 VALUE 时,查询 SELECT NEXT VALUE FROM TABLE 会导致发生错误,并且应重新编写为 SELECT NEXT AS VALUE FROM TABLE。 例如,如果表的名称为 NEXT 且其别名为 VALUE,查询 SELECT Col1 FROM NEXT VALUE 会导致发生错误,并且应重新编写为 SELECT Col1 FROM NEXT AS VALUE。

非 ANSI 样式左外部联接

标题:不再支持并已删除非 ANSI 样式左外部联接。
类别:警告

描述
在 Azure SQL 托管实例中,不再支持并已删除非 ANSI 样式左外部联接。

建议
使用 ANSI 联接语法。

详细信息:SQL Server 中弃用的数据库引擎功能

非 ANSI 样式右外部联接

标题:不再支持并已删除非 ANSI 样式右外部联接。
类别:警告

描述
在 Azure SQL 托管实例中,不再支持并已删除非 ANSI 样式右外部联接。

详细信息:SQL Server 中弃用的数据库引擎功能

建议
使用 ANSI 联接语法。

数据库数目超过 100 个

标题:每个 Azure SQL 托管实例最多支持 100 个数据库。
类别:警告

描述
除非已达到实例存储大小限制,否则 Azure SQL 托管实例支持的最大数据库数目为 100 个。

建议
如果所有数据库都必须在同一个实例上,则请考虑将数据库迁移到其他 Azure SQL 托管实例或 Azure 虚拟机上的 SQL Server。

详细信息:Azure SQL 托管实例资源限制

OPENROWSET(非 Blob 数据源)

标题:Azure SQL 托管实例不支持将批量操作中使用的 OpenRowSet 用于非 Azure Blob 存储数据源。
类别:问题

描述
OPENROWSET 通过内置的 BULK 提供程序支持批量操作,该提供程序使文件中的数据可被读取并作为行集返回。 Azure SQL 托管实例不支持将 OPENROWSET 用于非 Azure Blob 存储数据源。

建议
由于 Azure SQL 托管实例无法访问文件共享和 Windows 文件夹,因此必须从 Azure Blob 存储导入文件。 因此,OPENROWSET 函数中仅支持 DATASOURCE Blob 类型。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的批量插入和 OPENROWSET 差异

OPENROWSET(非 SQL 提供程序)

标题:Azure SQL 托管实例不支持将 OpenRowSet 用于非 SQL 提供程序。
类别:问题

描述
当访问链接服务器中的表时,这种方法是一种替代方法,并且是一种使用 OLE DB 连接并访问远程数据的一次性的临时方法。 Azure SQL 托管实例不支持将 OpenRowSet 用于非 SQL 提供程序。

建议
OPENROWSET 函数只能用于对 SQL Server 实例(托管实例、本地实例或虚拟机中的实例)执行查询。 支持提供程序 SQLNCLISQLNCLI11SQLOLEDBMSOLEDBSQL(建议)。 对于新开发,推荐使用 Microsoft OLE DB Driver for SQL Server

建议的操作是确定哪些从属数据库属于非 SQL 远程服务器,并考虑将它们移到要迁移的实例中。

详细信息:Azure SQL 托管实例中的批量插入和 OPENROWSET 差异

PowerShell 作业

标题:PowerShell 作业步骤在 Azure SQL 托管实例中不受支持。
类别:警告

描述
这是运行 PowerShell 脚本的作业步骤。 PowerShell 作业步骤在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用 PowerShell 作业步骤的作业,并评估是否可以删除作业步骤或受影响的对象。 评估是否可以使用 Azure 自动化。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

队列读取器作业

标题:队列读取器作业步骤在 Azure SQL 托管实例中不受支持。
类别:警告

描述
这是用于激活复制队列读取器代理的作业步骤。 复制队列读取器代理是一个可执行文件,用于读取存储在 Microsoft SQL Server 队列或 Microsoft 消息队列中的消息,然后将这些消息应用于发布服务器。 队列读取器代理与允许排队更新的快照发布和事务发布一起使用。 队列读取器作业步骤在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用队列读取器作业步骤的作业,并评估是否可以删除作业步骤或受影响的对象。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

RAISERROR

标题:应将旧式的 RAISERROR 调用替换为等效的新式调用。
类别:警告

描述
类似于以下示例的 RAISERROR 调用称为旧式,因为它们不包含逗号和括号。 RAISERROR 50001 'this is a test'。 在 Azure SQL 托管实例中,不再支持并已删除 RAISERROR 的这种调用方法。

建议
使用当前的 RAISERROR 语法重新编写语句,或评估 BEGIN TRY { } END TRY BEGIN CATCH { THROW; } END CATCH 的新式方法是否可行。

详细信息:SQL Server 中弃用的数据库引擎功能

SQL Mail

标题:不再支持 SQL Mail。
类别:警告

描述
在 Azure SQL 托管实例中,不再支持并已删除 SQL Mail。

建议
使用数据库邮件。

详细信息:SQL Server 中弃用的数据库引擎功能

SystemProcedures110

标题:检测到引用已删除的系统存储过程的语句,这些系统存储过程在 Azure SQL 托管实例中不可用。
类别:警告

描述
今后不能在 Azure SQL 托管实例中使用不受支持的系统存储过程和扩展存储过程 – sp_dboptionsp_addserversp_dropaliassp_activedirectory_objsp_activedirectory_scpsp_activedirectory_start

建议
删除对不受支持并且已从 Azure SQL Managed托管实例中删除的系统存储过程的引用。

详细信息:SQL Server 中弃用的数据库引擎功能

Transact-SQL 作业

标题:TSQL 作业步骤包含 Azure SQL 托管实例不支持的命令
类别:警告

描述
这是在计划的时间运行 Transact-SQL 脚本的作业步骤。 TSQL 作业步骤包含 Azure SQL 托管实例不支持的命令。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有包含 Azure SQL 托管实例不支持的命令的作业,并评估是否可以删除作业步骤或受影响的对象。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的 SQL Server 代理差异

跟踪标志

标题:找到 Azure SQL 托管实例不支持的跟踪标志
类别:警告

描述
Azure SQL 托管实例仅支持有限数量的全局跟踪标志, 不支持会话跟踪标志。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看 Azure SQL 托管实例不支持的所有跟踪标志,并评估是否可以删除这些跟踪标志。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:跟踪标志

Windows 身份验证

标题:通过 Windows 身份验证映射的数据库用户(集成安全性)在 Azure SQL 托管实例中不受支持
类别:警告

描述
Azure SQL 托管实例支持以下两种类型的身份验证:

  • SQL 身份验证,使用用户名和密码
  • Microsoft Entra 身份验证,其使用由 Microsoft Entra ID 托管的标识,并且受托管域和集成域支持。

通过 Windows 身份验证映射的数据库用户(集成安全性)在 Azure SQL 托管实例中不受支持。

建议
将本地 Active Directory 与 Microsoft Entra ID 联合。 然后,可以将 Windows 标识替换为等效的 Microsoft Entra 标识。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:SQL 托管实例安全功能

xp_cmdshell

标题:xp_cmdshell 在 Azure SQL 托管实例中不受支持。
类别:问题

描述
xp_cmdshell 会生成 Windows 命令 shell 并传入要执行的字符串,它在 Azure SQL 托管实例中不受支持。

建议
检查 Azure Migrate 中的“受影响的对象”部分,查看所有使用 xp_cmdshell 的对象,并评估是否可以删除对 xp_cmdshell 的引用或受影响的对象。 考虑了解 Azure 自动化,它提供基于云的自动化和配置服务。 或者,迁移到 Azure VM 上的 SQL Server。

详细信息:Azure SQL 托管实例中的存储过程差异