我写这只是我遇到一个问题的参考,而到SQL Server数据库插入n日志配置。
我试图在一个数据库字段中插入XML模式(NLOG配置),我得到一个异常说:“ XML解析:1号线,290字,未申报的前缀 ”。
我GOOGLE了一点点,发现该解决方案
下面是我想在要插入到数据库的架构。
<target xsi:type="File" name="TestXmlConfigTarget" fileName="C:\temp\logs\log.csv" archiveFileName="C:\temp\logs\test_log.csv.log" archiveEvery="Month" keepFileOpen="false" encoding="UTF-8" maxArchiveFiles="30" archiveNumbering="Rolling" archiveAboveSize="1000000" concurrentWrites="true">
<layout xsi:type="CsvLayout">
<column name="DateStamp" layout="${date:format=MM-\dd-\yyyy HH\:mm\:ss K}" />
</layout>
</target>
DECLARE @txml xml= N'<target xsi:type="File" name="TestXmlConfigTarget" fileName="C:\temp\logs\log.csv" archiveFileName="C:\temp\logs\test_log.csv.log" archiveEvery="Month" keepFileOpen="false" encoding="UTF-8" maxArchiveFiles="30" archiveNumbering="Rolling" archiveAboveSize="1000000" concurrentWrites="true"> <layout xsi:type="CsvLayout"> <column name="DateStamp" layout="${date:format=MM-\dd-\yyyy HH\:mm\:ss K}" /> </layout> </target>' SELECT @TXML
虽然试图执行我有类似下面的异常。
消息9459,级别16,状态行1
XML解析:1号线,290字,未申报的前缀。
分析了它一下,我意识到,“XSI:”是麻烦制造者。
为了解决这个问题,我在架构根加入了的xmlns名字空间。
XMLNS:XSI =“http://www.w3.org/2001/XMLSchema-instance” 在架构和现在的SQL看起来像
DECLARE @txml xml= N'<target xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="File" name="TestXmlConfigTarget" fileName="C:\temp\logs\log.csv" archiveFileName="C:\temp\logs\test_log.csv.log" archiveEvery="Month" keepFileOpen="false" encoding="UTF-8" maxArchiveFiles="30" archiveNumbering="Rolling" archiveAboveSize="1000000" concurrentWrites="true"> <layout xsi:type="CsvLayout"> <column name="DateStamp" layout="${date:format=MM-\dd-\yyyy HH\:mm\:ss K}" /> </layout> </target>' SELECT @TXML
这解决了我的问题..
固定模式的问题之后,我可以能够与任何问题插入变量在适当的数据库字段..
希望这可以帮助一些身体..
热门源码