如何在SSDT中刷新视图的列?

时间:2017-06-05 21:10:02

标签: sql-server sql-server-2008-r2 sql-server-data-tools

尝试部署SQL Server数据工具(SSDT)数据库项目时出现此错误:

  

查看或功能'dbo.Employees'指定了比列定义的列更多的列名。

我从基础表中删除了一个列,视图如下所示:

CREATE VIEW [dbo].[Employees] AS SELECT * FROM [$(ExternalDB)].[dbo].[Employees];

执行Google搜索会返回this page,表示SQL Server会在必须刷新的视图上保留元数据。他们提到了这个命令:

EXEC sp_refreshview 'Employees';

如果我将它放在预部署脚本中,它将在删除列之前运行。如果我将它放在部署后脚本中,部署将在执行之前抛出错误。所以我的问题是在哪里或如何使用SSDT项目

1 个答案:

答案 0 :(得分:1)

这很有意思,因为默认情况下,ssdt将刷新依赖于作为部署的一部分而更改的任何表的任何视图。

是否将列作为正常ssdt部署的一部分而丢弃了?

在您的发布配置文件或发布选项中,您是将ScriptRefreshModule设置为false吗?

除了这个选择*在视图中是不好的做法,把完整的列列表和这个问题消失,你甚至可以右键单击“选择*”并选择展开以获得完整的列列表 - 改为: ) 编