Ошибка помощника по миграции данных SQL Azure (DMA) - имена из трех или четырех частей - PullRequest
1 голос
/ 12 марта 2019

Я использую инструмент MS Data Migration Assistant для перемещения базы данных SQL Server 2016 в Azure.Я получаю следующую ошибку на 80+ хранимых процедурах:

Запросы или ссылки с использованием имен из трех или четырех частей, не поддерживаемых в базе данных SQL Azure.Формат имени из трех частей [имя_базы_данных]. [Имя_схемы]. [Имя_объекта] поддерживается только в том случае, если имя_базы_данных является текущей базой данных или имя_базы_данных является tempdb и имя_объекта начинается с #.

Всеиз этих хранимых процедур используют текущую базу данных и ссылаются на текущее имя базы данных.Например, эта инструкция вызывает ошибку:

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

, и когда я запускаю команду:

SELECT DB_NAME();

, я получаю:

STDR

Может ли это бытьошибка в инструменте DMA?Это мешает мне выполнить миграцию.Я бы предпочел не изменять все эти процедуры.Спасибо.

Ответы [ 2 ]

1 голос
/ 12 марта 2019

1. Запросы или ссылки с использованием имен из трех или четырех частей, не поддерживаемых в базе данных SQL Azure.

Это не ошибка в инструменте DMA. Кросс-запросы к базе данных с использованием трех или четырех имен частей не поддерживаются в Azure SQL Server.

enter image description here

Вы можете прочитать больше в официальной документации: Устранение различий Transact-SQL при миграции на базу данных SQL

2. Формат имени из трех частей [имя_базы_данных]. [Имя_схемы]. [Имя_объекта] поддерживается только в том случае, если имя_базы_данных является текущей базой данных или имя_базы_данных является tempdb, а имя_объекта начинается с #.

Об этом вопросе у меня есть идея, и я думаю, что вы можете попробовать ее. Вы можете указать целевой экземпляр базы данных Azure с тем же именем базы данных и теми же объектами схемы с вашим локальным SQL Server. В противном случае, когда ваша база данных SQL Server 2016 будет перенесена в Azure, текущая база данных не будет [STDR] и приведет к ошибке.

Ссылка: Миграция локального SQL Server или SQL Server на виртуальных машинах Azure в базу данных SQL Azure с помощью помощника по миграции данных.

Надеюсь, это поможет.

0 голосов
/ 12 марта 2019

Это просто имя из четырех или трех частей, которое не совместимо с базой данных SQL Azure.Вы можете написать сценарий для всех своих программных объектов, а затем изменить формат имени из трех частей на формат имени из двух частей (dbo. [NameOfTheObjet]) в сценарии с помощью команды «Найти и заменить» в текстовом редакторе, таком как Notepad ++, а затем запустить этот сценарий в SQL Azure.База данных для переноса ваших объектов программирования.

После этого вы можете использовать DMA только для переноса схемы и данных ваших таблиц.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...