Ошибка: не удалось использовать представление или функцию из-за ошибок привязки
Я получил доступ только для чтения к представлениям, и когда я пытаюсь запросить представление, я получил это сообщение об ошибке. Может ли кто-нибудь помочь мне понять, что является актуальной проблемой и как ее исправить.
К вашему сведению... это первый раз, когда я просматриваю эту таблицу.
Вот сообщение об ошибке.
Msg 207, Level 16, State 1, Line 1
Invalid column name 'ProductCategoryL2Name'.
Could not use view or function 'DB.Product' because of binding errors.
Ответы
Ответ 1
Похоже, что было создано представление, а затем была изменена одна из базовых таблиц. I.e., ProductCategoryL2Name больше не существует или было переименовано. Вы можете попробовать это, чтобы получить определение вида, но таблицы sys могут быть заблокированы. Лучше всего поговорить с тем, кто владеет базой данных, и попросить их исправить (что может быть довольно кроличьей дырой в крупных организациях или на консультационных концертах).
SELECT sm.definition
FROM [YourDB].sys.sql_modules AS sm
JOIN [YourDB].sys.objects AS o
ON sm.object_id = o.object_id
WHERE sm.object_id = OBJECT_ID('YourDB.dbo.ViewName')
Ответ 2
при развертывании изменений в наших системах весьма часто появляется это сообщение об ошибке. Не удается использовать представление или функцию из-за ошибок привязки.
Это происходит потому, что представление может устареть из-за изменений базовых объектов, от которых зависит представление.
вы можете использовать sp_refreshview для исправления - или даже лучше - предотвращения - если вы делаете sp_refreshview @viewname='the_view_I_have_just_changed'
каждый раз, когда меняете вид или функцию.
Пример:
use my_database
exec sp_refreshview @viewname='dbo.vw_select_applicant'
exec sp_refreshview @viewname='dbo.vw_search'
execute as login='cola'
--to check the permissions
select top 10 * from dbo.vw_select_applicant
select top 10 * from dbo.vw_search