sql - 处理从 DMV 提取的单行查询中的注释的 SQL 格式化选项
问题描述
我是一名 DBA,因此我从各种 dmv 中获取大量查询文本来检查问题查询。我目前使用Poor Man T-SQL 格式化程序。我遇到的问题是当从 dmv 中提取查询文本时,例如这个代码块:
SQL 服务器版本 2012 或更高版本顺便说一句。
SELECT P.spid,
P.STATUS,
P.hostname,
P.loginame,
P.cpu,
R.start_time,
R.command,
P.program_name,
TEXT
FROM sys.dm_exec_requests R
CROSS JOIN master.dbo.sysprocesses P
CROSS APPLY sys.dm_exec_sql_text(P.sql_handle)
WHERE 1 = 1
and P.STATUS NOT IN ('sleeping', 'background')
AND R.session_id = P.spid
AND P.spid <> @@spid --ignore this query
当我从 TEXT 列中获取一个值并粘贴到一个新窗口时,我经常会遇到糟糕的临时查询,它看起来像我刚刚写的这个无意义的查询
SELECT X, Y --OPTIONAL, Z FROM ALPHABET as abc --FOR SPECIAL CASES LEFT JOIN AGGREGATECOUNT as A ON A.id = abc.id where 4>3 --to deal with non english AND 1=1
当使用我尝试过的工具(例如poorman t-sql formattor)进行格式化时,如果不手动跳过注释,我就无法摆脱它的“单行”状态。是否有任何格式化程序(用于 ssms 或 notepad++ 的插件是一个加号。)可以处理这种情况?还是我应该以不同的方式拉出文本以避免所有换行符丢失的问题?例如,使用我的工具格式化以上内容会产生
SELECT
X
,Y --OPTIONAL, Z FROM ALPHABET as abc --FOR SPECIAL CASES LEFT JOIN AGGREGATECOUNT as A ON A.id = abc.id where 4>3 --to deal with non english AND 1=1
如果不存在好的工具,是否有任何改进我当前流程的技巧,包括在“明显”评论后手动添加新行?
我的目标是:
SELECT
X
,Y --OPTIONAL
, Z
FROM ALPHABET as abc
--FOR SPECIAL CASES
LEFT JOIN AGGREGATECOUNT as A ON A.id = abc.id
WHERE 4>3
--to deal with non english
AND 1=1
解决方案
推荐阅读
- c++ - noexcept 的不同用途
- php - 如何从 json_decode 获取 emoji 字符并将主题存储在 mysql 表中
- javascript - 如何使用角度将谷歌地图捕获到图像
- .net-core - EF Core,返回条目或创建并返回
- vue.js - 如果直接访问页面,则 VUEX 状态未加载
- sql-server-2012 - SQL T-SQL 相对较新,我需要在 MS SQL Server 中转换字符串日期以显示 mm/dd/yyyy?
- swift - List Mac OS 的 SwiftUI 背景颜色
- javascript - 作出承诺业务逻辑检查,但不会工作
- android - 在android studio中更改阿拉伯字体
- java - 如何创建覆盖窗口以显示 Android 10 上的所有应用