我是一名DBA,因此我从各种dmv中抓取了很多查询文本来检查问题查询。我目前使用的是穷人T-SQL格式化程序。我遇到的问题是从dmv这样的代码块中提取查询文本时:
SQL Server 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
当使用我尝试过的工具(如可怜的t-sql格式化程序)进行格式化时,如果不手动跳过注释,则无法摆脱“单行”状态。是否有任何格式程序(用于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