根据此Microsoft文档:

http://msdn.microsoft.com/zh-cn/library/ms174205.aspx

我应该能够使用ctrl + K,然后按ctrl + D组合键在SQL Server Management Studio 2012中格式化我的SQL文档,但是当我使用该组合键时出现错误:


组合键(Ctrl + K,Ctrl + D)绑定到当前不可用的命令(格式
文档)。


我试图对没有格式的现有SQL文档进行修改。所有这些使得阅读变得极其困难。有谁知道如何使“格式文档”命令可用,以便我可以用SQL为我格式化此代码?

评论

我认为,仅在文本编辑器中可用的语句是技术作者说“不是查询编辑器”而不显式否定否定词的方式

@billinkc我认为那是不对的。文本编辑器是用于Transact-SQL和XML的“查询编辑器”,在处理XML时,它实际上并不是查询编辑器。我认为文档有点过分乐观,我对Connect项目也发表了这样的评论。

#1 楼

您要使用的键盘组合键(Ctrl + K,Ctrl + D)用于“格式化”-但程度并非您所期望的那样。它不是修饰词,仅用于插入正确的空格和制表符,如Tools > Options > Text Editor > Transact-SQL > General/Tabs所示-因此,如果突出显示一部分文本并按下键盘组合键,则应该将制表符转换为4个空格(如果已选择)插入空格),应用您指定的缩进类型等。
此选项并非旨在使代码更具可读性-这不是Management Studio当前提供的功能。尽管有多个第三方选项-有些在Management Studio外部,例如: br />编辑器中还提供用于各种级别格式化帮助的加载项:

Red-Gate的SQL提示
SSMS工具包
ApexSQL的Refactor
SSMSBoost
dbForge SQL Complete(Robert建议)

现在,您收到消息的原因...

组合键( Ctrl + K,Ctrl + D)绑定到当前不可用的命令(格式化文档)。

...是因为SSMS已将该键组合映射到其他上下文。您应该能够“修复”此问题的方式-再次,即使“修复”成功了,它仍然不会做您想要做的事情-通过执行以下操作:


转到Tools > Options > Environment > Keyboard


将光标放入Press shortcut keys:


按Ctrl + K,Ctrl + D


Shortcut currently used by:下拉菜单从DataWarehouse Designer更改为Text Editor



按OK
现在,这应该将键盘组合映射到文本编辑器,但是Management Studio在单击OK后将其还原(您将继续收到错误消息。因此,我认为问题在于文档认为该功能存在,但是Management Studio知道的更好,并且根本不提供它(Microsoft可能会将其记录为文档中的错误,并进行纠正,而不是在工具方面存在缺陷)。将来可能会有希望,但就目前而言,这是一个众所周知的且被广泛忽略的问题,您会注意到该文档所引用的Formatting选项卡根本不存在(尽管它在XML中存在,但键盘组合确实可以使用)。该文档可能应注明:

对在“选项”对话框的“文本编辑器”部分的语言的“格式”窗格中指定的语言应用缩进和空格格式。仅在文本编辑器中可用,并且仅对某些语言可用。 br />另一种方式要了解SSMS原生提供的格式选项类型,请转到Tools > Customize > Commands > Edit > Add Command... > Format,然后查看那里可能的命令列表。没有什么表示对实际语言有任何了解,因此它不知道在何处插入换行符或添加其他缩进或辅助括号等。

如果要特定于语言的格式设置使现有的T-SQL代码更具可读性,SSMS并不会带来太多好处,您需要寻求其他选择。

评论


我经历了OP和Aaron在SSMS 2016中描述的相同症状和行为;但是,我能够使其正常工作。关键是先删除所有与Ctrl + K绑定的命令,然后再使用“删除”按钮删除Ctrl + D,然后按照上述定义(工具>选项>环境>键盘),按照Aaron的四步程序绑定键盘。完成所有设置后,以下是“选项”对话框的屏幕快照:pasteboard.co/GDYkh3h.jpg。

–质点网
17年8月3日在17:55



我完全不确定为什么此评论未列出为答案,因为它会按照您说的那样对我有用。

–克里斯托弗
18年1月1日在19:19

#2 楼

我认为这在SSMS中是不可能的。对于此功能,打开了一个Connect项目。

我个人喜欢对格式差的SQL代码使用的是Poor SQL上的Web应用程序。将SQL代码格式化为您的规范确实做得很好。如果您愿意,甚至生成HTML。我不使用SSMS插件或他们宣传的任何其他可交付成果,我总是只是跳到网站上进行快速格式化,然后直接将其复制/粘贴到SSMS中。

评论


感谢您提供有关SQL较差的提示。一定要把那个塞进我的后兜里!

– Kris Gruttemeyer
2013年6月21日15:30

另一个不错的工具(对于格式化博客代码也很有用)是Simple-Talk的SQL Prettifier。

–亚伦·伯特兰(Aaron Bertrand)
2013年6月21日15:47

因此,即使Microsoft的文档说它可以格式化,SSMS也不可以吗?

–user11512
13年6月21日在16:47

SQL较差的记事本也有一个插件。不知道为什么不使用SSMS插件。现在,它们终于使它与SSMS 2012+一起使用了,它的工作效果很好。

–乔纳森·菲特(Jonathan Fite)
19年8月14日在13:43

#3 楼

安装执行此操作的加载项。我使用的是SQL Complete的免费版:http://www.devart.com/dbforge/sql/sqlcomplete/,它提供了一些基本的SQL格式化功能。它与SSMS集成,并使用Ctrl + K,D。

评论


免费的在线版本sql-format.com

–伊曼
2014年12月29日上午8:17

#4 楼

SqlSmash是一种商业工具,可让您在SSMS 2012和2014中格式化SQL(以及更多)。默认的键盘快捷键是(Ctrl + K,Ctrl + D)。

评论


请补充说明该工具不是免费的。

–超立方体ᵀᴹ
2014年8月1日在21:43

有一个免费的社区版本。

–詹森·盖格(Jason Geiger)
18年4月3日在14:33