更改表中的列顺序

适用于:SQL Server 2016 (13.x) 及更高版本 Azure SQL DatabaseAzure SQL 托管实例Analytics Platform System (PDW)

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

默认情况下,向表添加列会按照建议将其添加到表的末尾。

建议

表列顺序的最佳做法:

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

注意

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

使用 SQL Server Management Studio

更改列顺序

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

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

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

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

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

注意

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

使用 Transact-SQL

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

注解

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

后续步骤