尝试部署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项目?
答案 0 :(得分:1)
这很有意思,因为默认情况下,ssdt将刷新依赖于作为部署的一部分而更改的任何表的任何视图。
是否将列作为正常ssdt部署的一部分而丢弃了?
在您的发布配置文件或发布选项中,您是将ScriptRefreshModule设置为false吗?
除了这个选择*在视图中是不好的做法,把完整的列列表和这个问题消失,你甚至可以右键单击“选择*”并选择展开以获得完整的列列表 - 改为: ) 编