Ошибка: не удалось использовать представление или функцию из-за ошибок привязки

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

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