У нас есть простая функция, которая считает рабочие дни между двумя датами (исключая выходные и праздничные дни).
В одном представлении он работает нормально, но в другом представлении возвращает:
В разрешении EXECUTE было отказано в объекте 'fx_CountDaysBetween_V2', базе данных 'xxxx', схеме 'dbo'
Хорошее представление вызывает функцию с этой строкой
CASE
WHEN r.Current_Status_Code IN (2, 3, 4, 7)
THEN dbo.fx_CountDaysBetween_V2(CONVERT(DATE, PA.Create_Date), CONVERT(DATE, GETUTCDATE())) ELSE NULL END AS DaysInQueue,
Плохое представление имеет следующее:
dbo.fx_CountDaysBetween_V2(CONVERT(DATE, rh.Submitted_Date), ISNULL(CONVERT(DATE, rc.Completed_Date), GETUTCDATE())) AS SLA,
Человек с проблемой НЕ имеет прав на выполнение. Это похоже на проблему, но тогда почему одно работает, а другое нет. Эта функция также без проблем используется в других областях / представлениях