sql作业中的Xml解析问题

2024-03-26

我在 SQL Server 作业中执行查询时遇到错误。但如果我直接执行它,它就可以正常工作。

以用户身份执行:NT AUTHORITY\SYSTEM。

XML解析:第10行,第33个字符
输入意外结束 [SQLSTATE 42000](错误 9400)。这一步失败了。
SQL 严重性 16,SQL 消息 ID 9400

Code:

    declare  @URL VARCHAR(max) 

    set @url = 'http://www.spa.gov.sa/english/rss.xml'

    declare  @xmlT TABLE (yourXML XML)
    DECLARE @Response nvarchar(max)
    DECLARE @XML xml
    DECLARE @Obj int 
    DECLARE @Result int 
    DECLARE @HTTPStatus int 
    DECLARE @ErrorMsg nvarchar(MAX)

    EXEC @Result = sp_OACreate 'MSXML2.XMLHttp', @Obj OUT 

    EXEC @Result = sp_OAMethod @Obj, 'open', NULL, 'GET', @URL, false
    EXEC @Result = sp_OAMethod @Obj, 'setRequestHeader', NULL, 'Content-Type', 'application/x-www-form-urlencoded'
    EXEC @Result = sp_OAMethod @Obj, send, NULL, ''
    EXEC @Result = sp_OAGetProperty @Obj, 'status', @HTTPStatus OUT 

    INSERT @xmlT ( yourXML )
    EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'--, @Response OUT 


    INSERT into Tlb(discp, tit, datee, linkk)

--当我删除此语句时,下面的语句会产生问题,它在任何地方都可以正常工作

        SELECT   
            N.C.value('description[1]', 'nvarchar(max)') discp,   
            N.C.value('title[1]', 'varchar(999)') tit,
            N.C.value('pubDate[1]', 'varchar(99)') datee,
            N.C.value('link[1]', 'varchar(999)') linkk
        FROM
            @xmlT 
        CROSS APPLY 
            yourXML.nodes('//channel/item') N(C)

您了解 Sql 代理 TEXTSIZE 吗?

直接在过程中指定 TEXTSIZE 512 并执行,在这种情况下你会得到相同的错误

设置文本大小-1

或者其他值,我默认使用 -1 来表示无限大小的 sql SQL 代理上的服务器文本大小为 512

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sql作业中的Xml解析问题 的相关文章

随机推荐