使用设计功能查看时查看已损坏

Pau*_*l_J 6 sql-server ssms view

总而言之,我上周五发生了一件非常奇怪的事情。我们有一个每天更新的表,它使用一个作业来触发一个利用视图的过程。列正在从视图转换到正在更新的表,即视图中的列 A 正在更新表中的列 D,而不是它应该具有的列 A。

当我右键单击视图并从菜单中选择“设计”时,我可以看到问题确实是生成的 sql 语句正在写入以使用视图中 A 列的信息更新表中的 D 列。

我怀疑视图定义发生了变化,所以我右键单击视图并编写脚本以查看它上次更新的时间,当我这样做时,生成的脚本是正确的,并且与我选择“设计”选项时生成的 sql 完全不同. 在这一点上,我删除了视图并从脚本中重新创建了它。现在一切都很好。

有没有人见过这个?自 2000 年以来,我一直在使用 SQL 服务器,但从未遇到过这种情况。我们在 Win2K3 上使用 SQL2005 SP4(即将升级到 12)。任何见解将不胜感激。-保罗

Aar*_*and 7

是的,视图设计器是一个严重残废、有缺陷的垃圾,你不应该用它来“设计”你的视图。它应该被称为视图破坏器,因为它可以完全按照您的观察进行操作:将任何非标准 T-SQL 重新编写为它认为您的意思。我所说的“任何非标准 T-SQL”是指这两个开发人员可能花了大约一天时间测试这个“功能”没有预料到的任何事情。

始终,始终,始终使用 Script View As > Alter to > New Query Editor Window 修改您的视图。

请参阅这些相关的 Connect 项目:

http://connect.microsoft.com/SQLServer/feedback/details/465498/ssms-designer-is-sending-incorrect-alter-statement-to-engine-when-we-have-geomerty-data-type

我在解决方法中提到的地方:

显然,更好的方法是右键单击视图,将脚本更改为新窗口。我想知道他们什么时候会承认失败并完全抛弃视觉设计师。恕我直言,它们造成的问题多于解决的问题。

http://connect.microsoft.com/SQLServer/feedback/details/362679/ssms-right-click-on-a-view-to-edit

我在哪里做类似的事情,以及

http://connect.microsoft.com/SQLServer/feedback/details/459202/no-edit-option-when-right-clicking-on-a-view-in-management-studio-2008

我问的地方:

Edit 没有为视图带来可怕的图形设计器,它充满了错误并且缺乏对几个基本 T-SQL 结构的支持吗?这不就是设计现在所做的吗?