sql - Azure SQL 数据迁移助手 (DMA) 错误 - 三个或四个部分名称

标签 sql database azure azure-sql-database database-migration

我正在使用 MS 数据迁移助手工具将 SQL Server 2016 DB 移动到 Azure。我在 80 多个存储过程中收到以下错误:

Queries or references using three- or four-part names not supported in Azure SQL Database. Three-part name format, [database_name].[schema_name].[object_name], is supported only when the database_name is the current database or the database_name is tempdb and the object_name starts with #.

所有这些存储过程都使用当前数据库并引用当前数据库名称。例如,此指令导致错误:

DELETE FROM [STDR].[dbo].[report] WHERE [report_id] = @xid

当我运行命令时:

SELECT DB_NAME();

我得到:

STDR

这可能是 DMA 工具中的错误吗?它阻止我执行迁移。我宁愿不必修改所有这些程序。谢谢。

最佳答案

1.Azure SQL 数据库不支持使用三部分或四部分名称的查询或引用。

这不是DMA工具的错误。 Azure SQL Server 不支持使用三个或四个部分名称的跨数据库查询。

enter image description here

您可以在官方文档中阅读更多内容:Resolving Transact-SQL differences during migration to SQL Database

2.仅当database_name为当前数据库或database_name为tempdb且object_name以#开头时,才支持三部分名称格式:[database_name].[schema_name].[object_name]。

关于这个问题,我有一个想法,我想你可以尝试一下。您可以指定与本地 SQL Server 具有相同数据库名称和相同架构对象的目标 Azure 数据库实例。否则,当您的 SQL Server 2016 DB 迁移到 Azure 时,当前数据库不是 [STDR]并导致错误。

引用:Migrate on-premises SQL Server or SQL Server on Azure VMs to Azure SQL Database using the Data Migration Assistant.

希望这有帮助。

关于sql - Azure SQL 数据迁移助手 (DMA) 错误 - 三个或四个部分名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113054/

相关文章:

sql - 使用上一行的值

javascript - 通过分页更改表信息

php - 如果记录已经存在,如何跳过迭代? - PHP

Azure Powershell 命令在我的资源组下找不到我的 VM?

javascript - Azure Functions - 写入表输出绑定(bind)时处理错误

c# - 如何使用 C# 运行 Azure Web 作业

c# - 允许将空日期时间输入数据库吗?

java - 如何在 Hibernate 中设置只读列?

database - CAP 定理 - 可用性和分区容错性

java - Android光标获取下一个