提问人:udaikp 提问时间:9/21/2023 最后编辑:udaikp 更新时间:9/21/2023 访问量:63
将特殊字符“$”替换为“_”在 SSMS 中效果很好,而在 sqlcmd 中则不然
A Replace of special character '$' to '_' works well in SSMS, while it doesn't in sqlcmd
问:
我正在尝试在 SQL Server 2019 (v15) 中执行查询并遇到问题。替换在 SSMS 中效果很好,而在 sqlcmd 中执行相同的查询时则不然
实际查询
SELECT
RTRIM(DB_NAME(dbid)) AS dbName,
COUNT(dbid) AS ActiveSessions,
RTRIM(loginame) AS LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame;
SSMS 中的结果:
master 1 NT SERVICE\TELEMETRY$MSSQLSERVER01
sqlcmd 中的结果:
master 1 NT SERVICE\TELEMETRY
要修复 loginName 中的“$”,请使用以下命令修改查询:REPLACE
SELECT
RTRIM(DB_NAME(dbid)) AS dbName,
COUNT(dbid) AS ActiveSessions,
REPLACE(RTRIM(loginame), '$', '_') AS LoginName
FROM
sys.sysprocesses
WHERE
dbid > 0
GROUP BY
dbid, loginame;
SSMS 中的结果:
master 1 NT SERVICE\TELEMETRY_MSSQLSERVER01
结果:sqlcmd
master 1 NT SERVICE\TELEMETRY
问题
同一查询的结果不同。
我有这些问题,如果得到回答,我将不胜感激:
- 为什么同一查询在同一种语言中表现不同?
- 为什么查询仅在 SSMS 中有效,而在 SSMS 中不起作用?
sqlcmd
- 查询应该在什么地方工作?
sqlcmd
- 为什么值()被截断后?
MSSQLSERVER01
$
sqlcmd
答: 暂无答案
评论
sys.sysprocesses
sys.dm_exec_connections
sys.dm_exec_sessions
x
)添加到 sqlcmd 命令行以禁用变量替换,会发生什么情况?$
$(VariableNameHere)
$