我在MS SQL Server 2017中观察到了一些奇怪的行为.
+=在select中充当聚合器('连接所有行的值'),当右边是常量时.+=在select中,当右侧是列名时,则表示"只设置值" .(另外,这会改变其他列的聚合行为)所以我的问题是:
@c1结果只包含最后一行的值,即使+=使用了?@c2受到影响,通过改变+=- > =为@c1?BEGIN
DECLARE
@c1 NVARCHAR(MAX) = N'',
@c2 NVARCHAR(MAX) = N'';
SELECT
@c1 = constraint_name, -- version-1
@c2 += '+'
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS
ORDER BY 1 DESC
;
PRINT '@c1=' + @c1;
PRINT '@c2=' + @c2;
END
;
Run Code Online (Sandbox Code Playgroud)
版本1结果:
@c1 = fk_abcde
@c2 = ++++++++++++++++++++++++++++++++++++++++++
(`@c2` result is aggregation of many rows; …Run Code Online (Sandbox Code Playgroud) Spring 的侦探增加了 MDC X-B3-SpanId 和 SpanId。(与 TraceId 相同)
{X-B3-SpanId=0000000000000001, X-B3-TraceId=0000000000000002, X-Span-Export=false, spanExportable=false, spanId=0000000000000001, traceId=0000000000000002}
Run Code Online (Sandbox Code Playgroud)
“X-B3-”前缀值与非前缀值相同。
如果其中之一是多余的,我更愿意将其删除。(为了减少我的日志的冗长)
X-B3-SpanId 和 SpanId 之间有什么区别吗?(X-B3-TraceId 和 Traceid)
是否有充分的理由同时记录两者?
spring 文档中的图表https://cloud.spring.io/spring-cloud-sleuth/2.1.x/single/spring-cloud-sleuth.html#_propagation显示“X-B3-”前缀的东西只存在于请求头中用于传输,但如果我在没有任何这些标头的情况下发出请求,我的日志的 MDC 仍然包含“X-B3-”前缀值。
使用的依赖项:
只是简单地添加了对 gradle.build 的依赖 - 没有关于侦探的定制/配置。
*MDC = log4j2 的映射诊断上下文https://logging.apache.org/log4j/2.x/manual/thread-context.html