我正在使用 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 不支持使用三个或四个部分名称的跨数据库查询。
您可以在官方文档中阅读更多内容: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]
并导致错误。
希望这有帮助。
关于sql - Azure SQL 数据迁移助手 (DMA) 错误 - 三个或四个部分名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55113054/