在SQL Server Management Studio中格式化SQL

351

在Visual Studio和其他集成开发环境中,您可以通过快捷键、菜单或输入时自动进行格式化来轻松对代码进行自动格式化。

我想知道是否有一种方法能够在SQL Server Management Studio中启用这个标准功能?

我正在处理一些相当大的存储过程,它们是一堆格式不良的SQL代码混在一起,如果我能只需“全选->格式化SQL”就好了。


1
SQLinForm 提供了一个热键功能。 - Guido
2
现在它有一个免费的在线格式化程序:http://www.sqlinform.com/sql_formatter_online.html - Guido
在线上您可以使用 https://devtoolsonline20190908040816.azurewebsites.net/DevTools/Prettify_SQL。 - GomuGomuNoRocket
将Q更新为符合主题 - Andrew
4个回答

336
晚回答,但希望有所帮助:Poor Man's T-SQL Formatter是一个开源(免费)的T-SQL格式化程序,具有完整的T-SQL批处理/脚本支持(任何DDL,任何DML),SSMS插件,命令行批量格式化程序和其他选项。
它可立即/在线使用,网址为http://poorsql.com,今天刚刚升级到“1.0版”(在几个月的测试版之后),新增了对MERGE语句、OUTPUT子句和其他棘手的内容的支持。
SSMS插件允许您设置自己的热键(默认为Ctrl-KCtrl-F,以匹配Visual Studio),并格式化整个脚本或您选择/突出显示的代码。输出格式可以自定义。
在SSMS 2008中,它与内置的智能感知结合得很好,有效地提供了与Red Gate的SQL Prompt基本相同的功能(当然,SQL Prompt还有额外的功能,如片段、快速对象脚本等)。
反馈/功能请求非常欢迎,请尽可能尝试一下!
披露:这可能已经很明显了,但我编写了这个库/工具/网站,所以这个答案也是无耻的自我推广 :)

3
在SQL server 2012上,默认的Ctrl+K,Ctrl+F快捷键无法使用,因为系统显示它已经被绑定到“格式化选择”功能上。将其从“DataWarehouse Designer::Ctrl+k, Ctrl+f”更改为“Global::Ctrl+k, Ctrl+j”后,该快捷键可正常使用。 - Marco Lackovic
5
请查看有关在SSMS 2014中安装提示的线索:https://dev59.com/3GAg5IYBdhLWcg3wrMl5 - Alexander Sigachov
2
很棒的工具,但不兼容2016 RTM。 - dmeglio
1
@dman2306 - 现在可用于2016(和17)的安装程序已兼容。 - Tao
3
在Windows 10中,.Net Framework 3.5 SP1(包括.Net 2.0)是Windows的一个可选功能,可以在“打开或关闭Windows功能”屏幕/功能中启用。它被称为“.NET Framework 3.5(包括.NET 2.0和3.0)”,并且位于可选功能列表的顶部 - 这对您不起作用吗?(是的,很抱歉,在当今这个时代要求使用 .Net 2.0 可能不太合理... 创建了问题 https://github.com/TaoK/PoorMansTSqlFormatter/issues/199 来跟踪此问题) - Tao
显示剩余10条评论

207

我偶然发现了一个特别的技巧。

  1. 选择你想格式化的查询。
  2. Ctrl+Shift+Q (这将在查询设计器中打开你的查询)
  3. 然后只需点击“确定”即可。 哇!查询设计器将为您格式化查询。 但要注意的是,您只能将其用于语句而不是过程代码,但总比什么都没有好。

23
好的提示。不幸的是,虽然这种方法确实有效,但我认为它的效果不太好。但至少有一些内置的东西。 - John Homer
2
据我所知,虽然它实际上做得不是最好的,但它确实可以做一些事情,而且它是开箱即用的,你不需要付费。但只有一个人认为它有用。我真的很惊讶,我以为我已经把这个问题弄清楚了;-) - Justin
1
我发现,同样地,当粘贴到新视图中时,查询也会被格式化。但是,这样更加清晰... +1。 - Feckmore
24
只有当查询的内容能够在图形上表示时,这才有效。 - kbvishnu
5
请注意,这种方法不仅不能用于复杂查询(需要格式化的查询),而且如果你在 Management Studio v 11.0.6020 中选择一个复杂查询并按 Ctrl+Shift+Q,程序可能会崩溃,并可能导致部分工作丢失(即使有恢复功能也是如此)。 - Mike Nakis
显示剩余2条评论

25
Azure Data Studio - 免费并来自微软 - 提供自动格式化功能(在编辑时按ctrl + shift + p -> 格式化文档)。有关 Azure Data Studio 的更多信息在此处
虽然它不是 SSMS,但非常适合编写查询,免费且是 Microsoft 的官方产品。它甚至跨平台。 简而言之:只需切换到 Azure Data Studio 来编写您的查询!

从 SQL Server Management Studio (SSMS) 18.7 开始,Azure Data Studio 会自动与 SSMS 一起安装。

来源

更新:实际上,Azure Data Studio 在某种程度上是 Microsoft 建议用于编写查询的工具(来源

如果您正在进行大多数编辑或执行查询,请使用 Azure Data Studio。


2
仅为明确起见,Azure Data Studio是一种本地工具,适用于所有数据库,包括本地、在预设位置和云中的数据库,其名称有些误导。 - HalvarF
1
是的。正如@HalvarF所说,这是一款很棒的软件,但名字太糟糕了。 - dgo
它仍然存在一些问题,例如:使用AAD身份验证不断断开服务器连接或缺少“查看依赖项”功能。我在工作中尝试使用了一个星期,但对我来说SSMS仍然更好(即使仅用于查询)。 - Mr Patience
我不知道为什么他们没有将这个功能放入SSMS中,但它确实可行,比没有好。我还发现有一种方便的方法可以从SSMS打开它,您可以转到工具> Azure Data Studio,它会打开。 - SendETHToThisAddress
1
这很好,但它没有将SQL命令大写。 - Lenard Bartha
显示剩余3条评论

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接