我有一个存储过程从Web服务检索XML数据它按预期工作。经过一段时间的测试,我希望将这个存储过程用作SCHEDULED JOB,然后用T-SQL' EXEC sp_GetData创建新的一个;'并得到失败的结果(错误9400)。
我再现了如果我通过查询编辑器窗口(EXEC sp_GetData;)执行它,我的存储过程可以正常工作,但如果通过预定作业检索数据超过3个以下XML数据对象,则无法工作
问题: 如何增加SQL Server代理以检索所有数据(大约3MB文件大小),然后插入到特定的表中。
<ArrayOfEmployeeMobilesInfo xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://tempuri.org/">
<EmployeeMobilesInfo>
<EmployeeCode>00001</EmployeeCode>
<TitleEN>Mr.</TitleEN>
<EmpNameEN>John</EmpNameEN>
<EmpSurnameEN>Doe</EmpSurnameEN>
<PositionNameEN>Police</PositionNameEN>
<Title>Mr.</Title>
<EmpName>John</EmpName>
<EmpSurname>Doe</EmpSurname>
<PositionName>Police</PositionName>
<CenterCode>PP777</CenterCode>
<Location>PP</Location>
<Email>john@person.com</Email>
<DivisionCode>PPD77</DivisionCode>
<DivisionName>PPD77</DivisionName>
<DepartmentCode>PDD25</DepartmentCode>
<DepartmentName>PDD25</DepartmentName>
<PositionLevel>POC</PositionLevel>
<PositionWeight>H</PositionWeight>
<JoinDate>2013-10-01T00:00:00</JoinDate>
<Mobiles>
<Mobile>
<MobileNo>1500111232</MobileNo>
</Mobile>
</Mobiles>
<TerminateDate xsi:nil="true" />
</EmployeeMobilesInfo>
... x 2
</ArrayOfEmployeeMobilesInfo>
我的存储过程
SET NOCOUNT ON;
DECLARE @URL NVARCHAR(500);
DECLARE @obj INT;
IF OBJECT_ID('xml_employees', 'U') IS NOT NULL DROP TABLE xml_employees;
IF OBJECT_ID('Employees', 'U') IS NOT NULL DROP TABLE Employees;
CREATE TABLE xml_employees ( resp XML );
SET @URL = 'http://localhost/DataService/Employee.asmx/GetEmployees';
EXEC sp_OACreate 'MSXML2.ServerXMLHttp', @obj OUT
EXEC sp_OAMethod @obj, 'Open', NULL, 'GET', @URL , false
EXEC sp_OAMethod @obj, 'send'
INSERT xml_employees ( resp )
EXEC sp_OAGetProperty @obj, 'responseXML.xml'
错误消息
XML parsing: line 12, character 18, unexpected end of input [SQLSTATE 42000] (Error 9400). The step failed.
请给我一些建议。 谢谢
编辑1:尝试将TEXTSIZE设置为this线程提及
答案 0 :(得分:0)
SET TEXTSIZE 2147483647;救我的屁股!
SQL Server Agent的默认TEXTSIZE是4KB,但是我的实例得到了1KB。