Помощник по миграции данных Azure - блокировщики миграции для просмотра ссылок на [INFORMATION_SCHEMA], sys.objects и sys.parameters - PullRequest
0 голосов
/ 29 января 2019

Мы перемещаем базу данных проекта из локального экземпляра SQL Server 2017 в Azure.Мы работали над устранением любых проблем MigrationBlocker, о которых сообщил помощник по миграции данных.У нас есть две проблемы, связанные с неразрешенными ссылками, от представлений до sys.objects, sys.parameters и различных элементов [INFORMATION_SCHEMA] в нашей собственной базе данных.

Мы не знаем ссылок на другие базы данных.Но мы думали, что сможем ссылаться на эти системные представления в нашей собственной схеме.Что не так?

Мы попытались добавить идентификатор третьей части в нашу собственную базу данных, как показано ниже.Также попытался использовать полные ссылки для каждого столбца: SELECT SO.Name -> SELECT sys.object.Name

Это меньшее представление:

CREATE VIEW [dbo].[VW_BUILD_PARAMETERS]
AS
SELECT 
CAST(SO.Name as sysname) AS ObjectName,
CASE SO.Type_Desc 
    WHEN 'SQL_STORED_PROCEDURE'             THEN 'Procedure'
    WHEN 'SQL_SCALAR_FUNCTION'              THEN 'Function'
    WHEN 'SQL_INLINE_TABLE_VALUED_FUNCTION' THEN 'Function'
END AS [ObjectType],
CAST(P.is_output as bit) AS IsOutPutParameter,
CAST(P.parameter_id as int) AS ParameterOrder,
REPLACE(P.name, '@','') AS ParameterName,
UPPER(TYPE_NAME(P.system_type_id)) AS ParameterType,
CASE 
    WHEN TYPE_NAME(P.user_type_id) = 'varchar' THEN          
CAST(P.max_length AS INT) 
END AS MaximumCharacterLength
FROM FOO.sys.objects AS SO    -- No change if this is: sys.objects as SO
INNER JOIN FOO.sys.parameters AS P  
   ON SO.OBJECT_ID = P.OBJECT_ID
WHERE SO.type IN ('P','FN','IF')
  AND P.parameter_id > 0

Вот пример содержимогоошибка DMA:

View: [dbo].[VW_BUILD_PARAMETERS] has an unresolved reference to object [sys].[parameters]. For more details, please see: Line 21, Column 12.\n 

View: [dbo].[VW_BUILD_PARAMETERS] contains an unresolved reference to an object. Either the object does not exist or the reference is ambiguous because it could refer to any of the following objects: 
[sys].[objects].[OBJECT_ID], [sys].[objects].[objects]::[OBJECT_ID] or [sys].[parameters].[objects]::[OBJECT_ID]. For more details, please see: Line 22, Column 7.\n 

В этой ошибке перечислено 14 элементов.Каждый ссылается на то, что таблица sys является неразрешенной ссылкой, или одна из ссылок на столбцы неоднозначна.Я предполагаю, что если мы исправим неразрешенную таблицу sys, то это исправит проблемы со столбцами.

Второе представление использует только таблицы [INFORMATION_SCHEMA] и выдает предупреждения о том же шаблоне.

Ожидаемый результат - сделать инструмент DMA счастливым, исправив ошибки блокировки, но давайте оставим эти два представления.

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