Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Azure SQL数据迁移助手(DMA)错误-由三部分或四部分组成的名称_Sql_Database_Azure_Azure Sql Database_Database Migration - Fatal编程技术网

Azure SQL数据迁移助手(DMA)错误-由三部分或四部分组成的名称

Azure SQL数据迁移助手(DMA)错误-由三部分或四部分组成的名称,sql,database,azure,azure-sql-database,database-migration,Sql,Database,Azure,Azure Sql Database,Database Migration,我正在使用MS Data Migration Assistant工具将SQL Server 2016 DB移动到Azure。我在80多个存储过程中遇到以下错误: Azure SQL数据库不支持使用由三部分或四部分组成的名称的查询或引用。只有当数据库名称为当前数据库或数据库名称为tempdb且对象名称以#开头时,才支持由三部分组成的名称格式,[database_name].[schema_name].[object_name] 所有这些存储过程都使用当前数据库并引用当前数据库名称。例如,此指令导致

我正在使用MS Data Migration Assistant工具将SQL Server 2016 DB移动到Azure。我在80多个存储过程中遇到以下错误:

Azure SQL数据库不支持使用由三部分或四部分组成的名称的查询或引用。只有当数据库名称为当前数据库或数据库名称为tempdb且对象名称以#开头时,才支持由三部分组成的名称格式,[database_name].[schema_name].[object_name]

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

DELETE FROM [STDR].[dbo].[report] WHERE [report_id] = @xid
当我运行命令时:

SELECT DB_NAME();
我得到:

STDR

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

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

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

您可以在官方文档中阅读更多内容:

2.只有当数据库名称为当前数据库或数据库名称为tempdb且对象名称以#开头时,才支持由三部分组成的名称格式,[数据库名称].[架构名称].[对象名称]。

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

参考:


希望这有帮助。

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


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

但错误消息特别指出:“只有当数据库名称为当前数据库时,才支持三部分名称格式,[数据库名称].[架构名称].[对象名称]。”Hi@dweeb\u plus,请查看我的更新,我给了您一个想法,您可以尝试一下。等待你的结果。