2016-10-20 3 views
0

Следующая функция дает предупреждение в SSDT 14.0.60923.0 SQL71502: Функция:. [DBO] [fn_CheckPolicy] имеет неразрешенный ссылку на объект [DBO] [Пользователи] [d] неправильно в.. Visual Studio 2015.SSDT OPENJSON Неправильное предупреждающее сообщение

Есть ли способ обойти это или это ошибка в SSDT?

CREATE FUNCTION [dbo].[fn_CheckPolicy] (@NameIdentifier nvarchar(128), 
             @Id    uniqueidentifier) 
RETURNS @returntable TABLE (
    [Id] uniqueidentifier, 
    [Acl] int) 
AS 
    BEGIN 
     WITH cte 
      AS (SELECT 1         AS [Level], 
         JSON_VALUE(d.[value], '$.id')  AS 'Id', 
         JSON_VALUE(d.[value], '$.acl') AS 'acl', 
         JSON_VALUE(d.[value], '$.type') AS 'type', 
         JSON_QUERY(d.[value], '$.s')  AS 'data' 
       FROM [dbo].[Users] u 
         CROSS apply OPENJSON(JSON_QUERY(u.[Policy], '$.c')) d 
       WHERE u.[NameIdentifier] = @nameIdentifier 
       UNION ALL 
       SELECT [Level] + 1, 
         ISNULL(JSON_VALUE(d.[value], '$.id'), '00000000-0000-0000-0000-000000000000'), 
         JSON_VALUE(d.[value], '$.acl'), 
         JSON_VALUE(d.[value], '$.type')  'type', 
         JSON_QUERY(d.[value], '$.a')   'data' 
       FROM cte 
         CROSS apply OPENJSON(JSON_QUERY([data], '$')) d) 
     INSERT INTO @returnTable 
     SELECT [Id], 
      CONVERT(int, CONVERT(varbinary, [Acl], 1)) 
     FROM cte 
     WHERE [Id] = @id 

     IF @@ROWCOUNT = 0 
     INSERT INTO @returntable 
        ([Id],[Acl]) 
     VALUES  (@id,'0xff') 

     RETURN 
    END 

ответ

0

Это похоже на ошибку при обращении с OPENJSON в SSDT. В последних версиях SSDT были исправлены ошибки в этой области, но, похоже, это еще одна проблема. Не могли бы вы указать ошибку Connect для этого на https://connect.microsoft.com/SQLServer/feedback/CreateFeedback.aspx с помощью категории «Средства разработки (SSDT, BIDS и т. Д.)»? Спасибо!