更改表中的列顺序

适用于: SQL Server 2016 (13.x) 及更高版本Azure SQL 数据库 Azure SQL 托管实例 分析平台系统 (PDW)

可以在 SQL Server Management Studio (SSMS) 中的表设计器中更改列的顺序。 默认情况下,SSMS 的安全机制会阻止更改列顺序。 虽然不建议这样做,但可以通过重新创建表来更改表中的列顺序。

默认情况下,将列添加到表会将其添加到表的末尾,建议这样做。

建议

表列排序的最佳做法:

  • 若要更改结果集、报表或应用程序中显示的列的顺序,请在 SELECT (Transact-SQL) 语句中使用列顺序。 请始终按照您希望它们出现的顺序在您的查询和应用程序中按名称指定列。
  • 不要在应用程序中使用 SELECT *。 添加或删除列可能会导致应用程序中出现意外行为或错误。
  • 将新列添加到表格末尾。

注意

更改表中的列顺序可能会影响依赖于特定列顺序的代码和应用程序。 这些代码和应用程序包括查询、视图、存储过程、用户定义函数和客户端应用程序等。 请在慎重考虑要对列顺序进行的任何更改。

使用 SQL Server Management Studio

更改列顺序

虽然不建议这样做,但可以使用 SQL Server Management Studio (SSMS) 更改表中列的顺序。 这需要重新创建表。

重要

请务必使用最新版本的 SQL Server Management Studio (SSMS)

  1. 在“对象资源管理器”中,右键单击包含要重新排序的列的表,再选择“设计”

  2. 选择要重新排序的列名称左侧的框。

  3. 将列拖动到表中的另一个位置。

SSMS 的一项重要安全功能可能会阻止你进行这些更改,该功能由“阻止保存要求重新创建表的更改”设置控制。 启用此设置可防止通过 SSMS 对话意外地删除/重新创建表,这种操作可能会造成中断,并导致元数据或权限丢失。 有关详细信息,请参阅 SSMS 中的“不允许保存更改”错误消息。 相反,建议你在充分了解其影响的情况下,通过考虑权限和元数据的 Transact-SQL 步骤执行这些类型的更改。

注意

重新创建表将阻止对其他用户和应用程序的表进行并发访问。 对于大型表,这可能需要较长的持续时间和大量的事务日志空间。

使用 Transact-SQL

不支持使用 Transact-SQL 语句更改列顺序。 必须删除并重新创建该表才能更改列顺序。

注解

若要需要查询已有列,请使用 sys.columns 对象目录视图。

后续步骤