为什么 Microsoft SQL Server Management Studio 不断创建表别名?

Ton*_*ony 4 sql-server ssms view

当我使用设计视图创建或编辑查询时,SSMS 会无缘无故地为某些创建别名 (TableName_1) 。更烦人的是,如果我在设计视图中打开现有查询,它也会这样做。换句话说,它改变了我的 SQL 代码!即使是简单的查询也有这个问题,例如:

SELECT  
  dbo.tblCalendar.id,  
  dbo.tblCalendar.title,  
  dbo.luCalendarType.typeName  
FROM  
  dbo.luCalendarType RIGHT OUTER JOIN  
  dbo.tblCalendar ON dbo.luCalendarType.id = dbo.tblCalendar.type
Run Code Online (Sandbox Code Playgroud)

将成为:

SELECT  
  dbo.tblCalendar.id,  
  dbo.tblCalendar.title,  
  luCalendarType_1.typeName  
FROM  
  dbo.luCalendarType AS luCalendarType_1 RIGHT OUTER JOIN  
  dbo.tblCalendar ON luCalendarType_1.id = dbo.tblCalendar.type
Run Code Online (Sandbox Code Playgroud)

有什么办法可以阻止 SSMS 改变我的 SQL 代码?

And*_*y M 5

最好的选择是停止使用 SSMS 视图设计器。

通过坚持使用普通的旧查询窗口来创建或编辑视图,您将可以完全控制查询以及 Transact-SQL 中的常规练习。

此外,已知 SSMS 视图设计器有问题(请参阅使用设计功能查看时视图已损坏)或产生特殊语法1(请参阅视图设计器奇怪的连接语法)或鼓励已过时且现在具有误导性的语法(请参阅升级后的SQL Server 2000 数据库到 SQL Server 2008 的视图没有按列排序)。

因此,简而言之,从长远来看,如果没有视图设计器,您会过得更好。


1本身不一定是问题,但您不太熟悉的语法并不适合查询的可维护性。