Reputation: 61
I am getting an error while executing the query in a SQL Server job. But if I execute it directly, it works fine.
Executed as user: 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
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)
--below statement creates problem when i remove this statement it works fine everywhere
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)
Upvotes: 5
Views: 3486
Reputation: 1
Before running the Stored Procedure, you must set the TEXTSIZE parameter to unlimited.
**SET TEXTSIZE -1**
declare @Year int = year(getdate())
declare @Month int = month(getdate())
declare @Gun int = day(getdate())
exec UPR_GetDovizKurlari_MerkezBankasi @Year,@Month,@Day
Upvotes: 0
Reputation: 71
Do you know about the Sql Agent TEXTSIZE?
Specify directly in the procedure TEXTSIZE 512 and exec, you'll get the same error in this case
SET TEXTSIZE -1
OR other value, i use -1 for unlimited size by default sql server textsize on the SQL Agent is 512
Upvotes: 7
Reputation: 67311
Your code how to get a flat file via URL works fine...
After this
INSERT @xmlT ( yourXML )
EXEC @Result = sp_OAGetProperty @Obj, 'responseXML.xml'
... your declared table variable contains one row with a valid XML.
@xmlT
to store a VARCHAR(MAX)
and do a pure SELECT
. The file comes as pre-formatted, "pretty" xml... So: the reported line and character numbers should be OK...My favorite is 1): As the reflected error speaks about "XML Parsing - Unexpected end of input" I'd suppose, that the XML you read is cut somewhere...
Find out
Upvotes: 2