在 SSMS 2012 中格式化 T-SQL

39 sql-server ssms

根据这个微软文档:

http://msdn.microsoft.com/en-us/library/ms174205.aspx

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

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

我正在尝试对现有的 SQL 文档进行修改,该文档根本没有格式化,这使得阅读非常困难。有谁知道如何使格式化文档命令可用,以便我可以使用 SQL 为我格式化此代码?

Aar*_*and 42

您使用的键盘组合 ( Ctrl+ K, Ctrl+ D) 用于“格式化” - 但不是您所期望的程度。它不是修饰符,它只是用于插入正确的间距和制表符,如Tools > Options > Text Editor > Transact-SQL > General/Tabs- 所以如果您突出显示一部分文本并按下键盘组合,它应该将制表符转换为 4 个空格(如果您选择了插入空格),应用您指定的缩进类型等。

此选项并非旨在使代码更具可读性 - 这不是 Management Studio 当前提供的本机功能。虽然有几个 3rd 方选项 - 有些是 Management Studio 的外部选项,例如:

并且还有用于编辑器中各种级别的格式化帮助的加载项:

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

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

...是因为 SSMS 已将该键组合映射到不同的上下文。您应该能够“修复”此问题的方式 - 再次说明,即使“修复”有效,它仍然无法执行您想要的操作 - 执行以下操作:

  1. Tools > Options > Environment > Keyboard

  2. 将光标放入Press shortcut keys:框中

  3. 点击Ctrl+ K, Ctrl+D

  4. Shortcut currently used by:下拉菜单从更改DataWarehouse DesignerText Editor

    在此处输入图片说明

  5. 按确定

现在,这应该将键盘组合映射到文本编辑器,但 Management Studio 在点击 OK 后将其还原(您将继续收到错误消息。所以,我认为问题在于文档认为此功能存在,但 Management Studio 知道得更好,只是不提供它(Microsoft 可能会将其作为文档中的错误写下来,并进行更正,而不是工具中的缺点)。未来可能有希望,但就目前而言,这是一个已知且在很大程度上被忽略的问题。您会注意到文档所指Formatting选项卡根本不存在(尽管它存在于 XML 中,键盘组合在其中起作用)。文档可能应该说明:

选项对话框的文本编辑器部分中语言的格式窗格中指定的语言应用缩进和空格格式。仅在文本编辑器中可用且仅适用于某些语言

另一种了解 SSMS 提供的格式化选项类型的另一种方法是访问Tools > Customize > Commands > Edit > Add Command... > Format并查看那里的可能命令列表。没有任何迹象表明对实际语言有任何了解,因此它不知道在哪里插入换行符或添加额外的缩进或辅助括号等。

在此处输入图片说明

如果您希望特定于语言的格式使现有 T-SQL 代码更具可读性,那么您将无法从 SSMS 中获得太多收益,您需要寻求其他选项。


Tho*_*ger 12

我不相信这在 SSMS 中是可能的。为此功能打开了一个连接项目

我个人喜欢使用Poor SQL上的Web 应用程序来处理格式不佳的SQL 代码。它在根据您的规范格式化 SQL 代码方面做得非常好。如果您愿意,甚至可以生成 HTML。我不使用 SSMS 插件或他们宣传的任何其他可交付成果,我总是在网站上进行快速格式化,然后直接复制/粘贴到 SSMS 中。

  • 另一个不错的(也可用于格式化博客代码)是 [Simple-Talk 的 SQL Prettifier](http://extras.sqlservercentral.com/prettifier/prettifier.aspx)。 (3认同)

Rob*_*roj 6

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