错误:由于绑定错误,无法使用视图或函数

Posted

技术标签:

【中文标题】错误:由于绑定错误,无法使用视图或函数【英文标题】:Error: Could not use view or function because of binding errors 【发布时间】:2017-01-28 17:09:17 【问题描述】:

我获得了对视图的只读访问权限,当我尝试查询视图时,我收到了此错误消息。任何人都可以帮助我了解实际问题是什么以及如何解决它。 仅供参考..这是我第一次查看此表。 这是错误消息。

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】:

听起来好像创建了视图,然后更改了基础表之一。即,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')

【讨论】:

我们怎么知道它被重命名或删除了?我无权查看表结构。 您必须与您的 DBA 一起解决这个问题。 你无法修复它,你需要通知希望你使用视图的人你不能使用它,因为它不会运行。【参考方案2】:

将更改部署到我们的系统时,收到此错误消息的情况并不少见由于绑定错误而无法使用视图或功能

发生这种情况是因为视图所依赖的底层对象发生变化后,视图可能会变得过时。

如果您每次更改视图或功能时都使用sp_refreshview @viewname='the_view_I_have_just_changed',则可以使用sp_refreshview 进行纠正或更好地预防。

示例:

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

【讨论】:

以上是关于错误:由于绑定错误,无法使用视图或函数的主要内容,如果未能解决你的问题,请参考以下文章

由于总线错误,无法使用Anaconda运行tensorflow GPU

由于套接字绑定错误,Apache不会在启动时启动,而是手动启动

错误无法使 UICollectionElementKindCell 类型的视图出列

由于错误无法构建角度项目:错误输出为:不推荐使用选项“vendorSourceMap”

MVC-5 对存储过程使用复杂类型的函数;创建视图给出错误:'无法检索 MyProject.Models.Movies_Result 的元数据

无法在Ext.grid.PagingToolbar Extjs上绑定存储