sql-server - sql 作业中的 Xml 解析问题

标签 sql-server xml sql-server-2008-r2 xml-parsing

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

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

XML parsing: line 10, character 33
Unexpected end of input [SQLSTATE 42000] (Error 9400). The step failed.
SQL Severity 16, SQL Message ID 9400

代码:

    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 Agent TEXTSIZE吗?

在程序中直接指定TEXTSIZE 512并exec,在这种情况下你会得到同样的错误

SET TEXTSIZE -1

或其他值,默认情况下我使用 -1 表示无限大小 sql SQL Agent 上的服务器 textsize 是 512

关于sql-server - sql 作业中的 Xml 解析问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35054159/

相关文章:

c# - 如何在 XMLtransformation 中包含 css 文件?

SQL 服务器 : verify that two columns are in same sort order

sql-server - 将行插入表中,只有一列、主键和标识

C#程序不执行存储过程

java - 多个结果集、不同查询、同一数据库 SQLSERVER

java - 应该使用哪个 SqlDriver 来记录 SQL Server 数据库中的 FIX session 和消息?

java - 如何将标准 xml 页面放入 AlertDialog - Android

.net - 在 .net 中验证和读取 xml 文件的最简单方法?

sql-server - ssrs 2008 将参数列表传递给子报表

sql-server - SQL Server 按架构还原和备份