【问题标题】:How can I get the view to display the current column definition?如何让视图显示当前列定义?
【发布时间】:2011-05-23 02:20:04
【问题描述】:

使用 SQL Server Express 2008 和 Management Studio。

我有一张桌子和一个视图。在创建视图时,表的 FirstName 列是 varchar(50)。将 Table.Firstname 修改为 nvarchar(50),View 仍然指示该列是 varchar(50)。

如何让视图显示当前列定义?

这是我尝试过的(没有用):

  • 点击刷新按钮
  • 关闭 Management Studio 并重新打开它。

以下是有效的:

  • 创建一个全新的视图。新视图会显示当前字段定义

注意:这个项目有很多视图,所以我不想重新创建所有视图。

【问题讨论】:

    标签: sql-server view schema


    【解决方案1】:

    运行sp_refreshview 或更新的sp_refreshsqlmodule

    最好的解决方案是使用WITH SCHEMABINDING,这样就不会发生这种情况。

    在 SO 上很常见,例如 here

    【讨论】:

      【解决方案2】:

      在联机丛书中查找 sys.sp_refreshsqlmodule。

      【讨论】:

      • 谢谢!在这种特殊情况下,sp_refreshsqlmodule 非常适用于没有“WITH SCHEMABINDING”创建的视图。例如EXEC sys.sp_refreshsqlmodule 'myDatabase.dbo.myView1'
      猜你喜欢
      • 2011-07-24
      • 2011-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多