sp_refreshview抛出意外错误

时间:2013-03-21 12:00:36

标签: sql-server-2008 tsql view

我目前正在编写一个TSQL脚本,其中部分脚本刷新数据库中的所有视图。在网上找到this示例后,我正在迭代整个集合,但在刷新其中一个视图(不是第一个)时遇到一个奇怪的问题。

在运行以下查询时,我从sysobjects表中得到一个结果

SELECT * FROM sysobjects WHERE type = 'V' AND name = 'vwEnginesFinishBuiltToday' 

enter image description here

然后运行刷新我得到一个异常回来

exec sp_refreshview N'dbo.vwEnginesFinishBuiltToday'

enter image description here

现在奇怪的是错误告诉我找不到具有不同名称的视图。确实它在数据库中不存在,因此认为dbo.vwEnginesFinishBuiltToday在内部使用另一个视图我查看了视图的TSQL。

SELECT     COUNT(dbo.tblBatches.IdBatch) AS TotalEnginesFinishedToday
FROM         dbo.tblBatches INNER JOIN
                      dbo.tblEngines ON dbo.tblBatches.IdBatch = dbo.tblEngines.idBatch
WHERE     (YEAR(dbo.tblEngines.DateFinished) = YEAR(GETDATE())) AND (MONTH(dbo.tblEngines.DateFinished) = MONTH(GETDATE())) AND (DAY(dbo.tblEngines.DateFinished) 
                      = DAY(GETDATE()))
嗯,没有提到那里的dbo.vwEnginesFinishedToday视图。不,我很难找到问题。

SQL Server中的sp_refreshsqlmodule_internal方法是否存在问题,或者我遗漏了哪些东西?

1 个答案:

答案 0 :(得分:2)

听起来您在过去的某个时刻重命名了视图,使用sp_rename或SSMS对象资源管理器。当您尝试刷新视图时,sp_refreshview正在尝试使用原始视图名称(不再存在)来更改视图。

尝试使用Script View as -> ALTER To -> New Query Editor Window选项生成ALTER VIEW脚本,执行脚本,然后再次尝试sp_refreshview