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

问题描述 投票:1回答:2

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

Azure SQL数据库中不支持使用三部分或四部分名称的查询或引用。仅当database_name是当前数据库或database_name是tempdb且object_name以#开头时,才支持三部分名称格式[database_name]。[schema_name]。[object_name]。

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

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

当我运行命令时:

SELECT DB_NAME();

我明白了:

STDR

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

sql database azure azure-sql-database database-migration
2个回答
1
投票

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

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

enter image description here

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

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

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

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

希望这可以帮助。


0
投票

它只是由四部分组成的名称或三部分名称与Azure SQL数据库不兼容。您可以编写所有编程对象的脚本,然后在文本编辑器(如Notepad ++)上使用“查找和替换”将脚本上的三部分名称格式更改为两部分名称格式(dbo。[NameOfTheObjet]),然后在Azure SQL上运行该脚本用于迁移编程对象的数据库。

之后,您只能使用DMA来迁移表的架构和数据。

© www.soinside.com 2019 - 2024. All rights reserved.