SeriLog用经典的.net框架从sql server读取属性值



我使用serilog和ms server来记录数据。在Properties列中,我有这个:

<root><prop key="Meassage">Person is createrd</prop><prop key="FirstName">John</prop><prop key="LastName">Rami</prop><prop key="BirthDate">10/19/1996 1:10:27 PM</prop></root>

在数据库中存储为nvarchar(max)数据类型。

我想获得每个属性的值我尝试使用这个

using (SqlConnection con = new SqlConnection(connectionString))
{
con.Open();
SqlCommand comm = new SqlCommand("SELECT Properties.value("/properties/property[@key='FirstName'])[1]", 'nvarchar(max)') AS FName from EventLog", con);
SqlDataReader srd = comm.ExecuteReader();
while (srd.Read())
{
string s = srd["FName"].ToString();
}
con.Close();
}

但是我得到一个错误:

System.Data.SqlClient。SqlException: '关键字'from'附近语法错误

解决方案吗?

这是正确的解决方案

SELECT 
CAST(Properties as XML).value(
'(/properties/property)[1]'
, 'nvarchar(max)'
) 
AS FName 
FROM EventLog
WHERE 
CAST(Properties as XML).value(
'(/properties/property/@key)[1]=''FirstName'''
, 'bit'
) = 1

相关内容

最新更新