您的位置:首页 > 数据库

SQL 2000 bug:在企业管理器中修改现有视图时,会自动将列名修改为Expr1,Expr2等

2009-05-07 13:18 316 查看
这个问题以前就遇到过,后来印象中好象是重装了SQL就解决了,今天又遇到了同样的问题,在修改SQL 2000已有的视图时,以前用的好好的视图一用企业管理器修改,所有select中列出的列名就被自动修改为Expr1,Expr2等等,补丁打到sp4也没用。

SELECT dbo.paper.*, dbo.prj.prjname AS Expr1, dbo.prj.prjtype AS Expr2,
dbo.users.username AS Expr3, dbo.users.fullname AS Expr4, dbo.rsda.sn AS Expr5
FROM dbo.paper LEFT OUTER JOIN
dbo.papertype ON dbo.paper.systype = dbo.papertype.sys LEFT OUTER JOIN
dbo.rsda ON dbo.paper.pid = dbo.rsda.PID LEFT OUTER JOIN
dbo.users ON dbo.paper.userid = dbo.users.userID LEFT OUTER JOIN
dbo.prj ON dbo.paper.prjid = dbo.prj.prjid


今天又在网上查找了一下,才知道是microsoft的BUG,在sql 7和sql 2000中全都存在

症状:

当从 SQL Server 企业管理器 (SEM) 设计视图工具创建视图,T-SQL 语法将显示正常。 但是,如果视图保存,在关闭设计视图,并设计视图重新打开要检查视图然后,语法将可能会更改。

SQL Server 2000 和 SQL Server 7.0 中, 出现此问题,尽管到 T-SQL 更改是两个版本之间稍有不同。 此行为是仅存在一个很少和唯一的组的情况。 请参阅在"更多信息"部分,了解进一步的详细信息,请。

当您右键单击视图,然后选择 属性 ,视图的语法显示正常 ; 它将可以运行在查询分析器 (QA),并将每次返回正确的结果。 但是,更改的语法,从设计视图不会返回正确的结果。

原因:

此问题已与为外部联接 ; 而不是它是由于到 autoaliasing 时在这些特定的情况下应该不会发生。 在结果是未绑定的列创建的获取重新绑定到错误的表。

替代方法:

使用设计视图创建视图后,避免编辑,然后 resaving 使用设计视图工具在 SQL 企业管理器视图。 使用查询分析器和 T-SQL 而编码。

Microsoft 已经确认这是 SQL Server 7.0 中的问题。
Microsoft 已经确认这是 SQL Server 2000 中的一个问题。

.....

这些都是机器翻译的结果,还是看看micorosft原文链接吧

查看microsoft给出的原文:

http://support.microsoft.com/kb/288527/zh-cn 机器翻译的中文

http://support.microsoft.com/kb/288527/en-us/ 英文原文
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐