存储过程在手动运行时工作,而不是在 SQL 代理作业中运行

Sha*_*Mir 6 xml sql-server sql-server-2008-r2

当我通过 SQL 代理作业执行存储过程时,收到以下错误消息:

以用户身份执行:NT AUTHORITY\SYSTEM。
XML 解析:第 10 行,字符 33,输入意外结束 [SQLSTATE 42000](错误 9400)。
步骤失败。
Sql 严重性 16,Sql 消息 ID 9400

但是,当我手动运行它时,它是成功的。

这是我正在执行的程序:

decalre @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)
Run Code Online (Sandbox Code Playgroud)

小智 4

当 google 地理编码和解析 XML 结果时,我遇到了同样的问题。似乎当通过 SQL 作业运行时,XML 结果被截断。

在这里找到解决方案:http://www.progtown.com/topic376715-a-problem-with-spoagetproperty-p2.html

必须放:

SET TEXTSIZE 2147483647;
Run Code Online (Sandbox Code Playgroud)

在我的存储过程开始时。