如何将Web Service的XML结果存储到SQL Server数据库中?

时间:2012-09-03 18:34:13

标签: sql-server xml wcf web-services

我们有一个调用Web服务的.Net客户端。我们希望将结果存储在SQL Server数据库中。

我认为我们在这里有两个选项如何存储数据,我有点犹豫不决,因为我无法清楚地看到优点和缺点:一个是将结果映射到数据库字段。这将要求我们具有与每种可能的结果类型相对应的数据库字段,例如,对于每个“正常”结果类型以及故障结果类型。

另一方面,我们可以通过SQL Server内置的XML函数存储生成的XML和查询。

就个人而言,我很乐意处理SQL和XML,所以对我来说都很好。

在尝试将结果XML存储到相当多的不同Web服务操作时,是否有任何重大的优缺点以及在数据库设计方面需要考虑什么?我正在考虑每个操作的结果表,我们使用不同的条目调用不同的可能结果/类型,然后将XML存储在右侧字段中,例如故障区域中的故障,相应字段中的“正常”返回类型等。

1 个答案:

答案 0 :(得分:4)

我们使用两者的组合。 XML用于参考和详细数据,以及您可能搜索的字段的文本列。可搜索的列包括订单号,客户参考号,票号。我们只需在需要时添加它们,因为您可以从XML列中提取它们。

我不推荐使用XML。如果您每天存储10.000条消息,则查询如下:

select * from XmlLogging with (nolock) where Response like '%Order12%'

会变慢并干扰其他查询。您也无法在GUI中显示日志记录,因为检索速度太慢。

我也不建议只使用文本列。如果XML格式发生变化,您将获得一个空列。没有XML消息,很难排除故障。此外,如果您需要“重播”消息流,那么使用XML消息会更容易。很少有要求需要重播,但在修复生产问题的后果时,它确实很有用。