【发布时间】:2018-03-02 07:35:30
【问题描述】:
我正在为 SQLServer 使用 Serilog 接收器,并使用 this 链接遵循 DB 架构和 XQuery 语法。然而,当我在 Navicat 中运行以下查询时,我得到了错误。
这是查询:
SELECT
Properties.value('(/properties/property[@key="contact"]/structure[@type="Contact"]/property[@key="ContactId"])[1]', 'nvarchar(max)') AS ContactId,
Properties.value('(/properties/property[@key="contact"]/structure[@type="Contact"]/property[@key="FirstName"])[1]', 'nvarchar(50)') AS FirstName,
Properties.value('(/properties/property[@key="contact"]/structure[@type="Contact"]/property[@key="Surname"])[1]', 'nvarchar(100)') AS Surname,
Properties.value('(/properties/property[@key="cacheKey"])[1]', 'nvarchar(100)') AS CacheKey,
*
FROM Log
WHERE MessageTemplate = 'Contact {@contact} added to cache with key {@cacheKey}'
AND Properties.value('(/properties/property[@key="contact"]/structure[@type="Contact"]/property[@key="ContactId"])[1]', 'nvarchar(max)') = 'f7d10f53-4c11-44f4-8dce-d0e0e22cb6ab'
这是错误声明:
[Err] 42000 - [SQL Server]找不到列“Properties”或用户定义的函数或聚合“Properties.value”,或者名称不明确。
任何解决方案或解决方法都将受到高度赞赏。
【问题讨论】:
-
列
Properties是XML格式吗?如果Log表有Properties列并且其格式为XML,则您的查询将运行。 -
不,不是……
标签: sql sql-server tsql xquery serilog