gpt4 book ai didi

sql-server - SQL Server 2008 - sp_refreshview 对某些 View 的轰炸

转载 作者:行者123 更新时间:2023-12-02 08:31:23 24 4
gpt4 key购买 nike

我继承了一个相当重要的项目,该项目广泛使用 SQL Server(2005 和 2008) View 。

构建过程中的一个步骤是调用sp_refreshviews系统存储过程,以确保任何表上的更改都不会破坏我们的 View 。这工作正常......除了大约三到四次(超过 200 次) View ......

有了这些,它就会爆炸 - 给出奇怪的错误消息,例如

Msg 15165, Level 16, State 1, Procedure sp_refreshsqlmodule_internal, Line 55
Could not find object 'vYourViewNameHere' or you do not have permission.

这是完全错误的 - 该 View 确实存在,而且我绝对可以从中进行选择。

我似乎找不到任何关于为什么发生这种情况、是什么触发它的好的简洁信息......有什么想法吗?我能做些什么来检测这些有问题的观点吗?我可以更改它们的定义以便它们再次可刷新吗?

更新:我为此在 Microsoft Connect 上记录了错误报告 - 如果您同意这看起来很奇怪并且需要修复,请投票!

https://connect.microsoft.com/SQLServer/feedback/details/676728/sp-refreshview-crashes-with-misleading-error-on-views-with-schemabinding

最佳答案

我注意到您在评论中提到它有 SCHEMABINDING。我几乎可以保证这就是问题所在。 Books online特别指出这是用于非架构绑定(bind) View 。

方案绑定(bind) View 不允许发生重大更改,因此无需更新元数据。您可以安全地跳过它。

您可以像这样识别所有架构绑定(bind) View :

SELECT * FROM sys.views WHERE OBJECTPROPERTY(object_id, 'IsSchemaBound')=1

关于sql-server - SQL Server 2008 - sp_refreshview 对某些 View 的轰炸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460421/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com