我正在编写一个从Web服务获取数据的过程。Web服务以XML字符串的形式提供数据。但是,它会截断从网站提取的数据。在SSMS中执行时,它可以完美运行。在批处理文件中运行时,它会将数据截断为2048个字符,在使用SS作业运行时,它会将数据截断为512个字符。
这些值不可能是随机的。一定有一个设置的地方,但我找不到它。有什么想法?
代码如下:
DECLARE
@url nvarchar(max),
@win integer,
@hr integer ,
@Date date,
@SearchDate nvarchar(50)
Set @Date = GETDATE()
set @SearchDate = CAST(@Date as nvarchar(50))
set @SearchDate = REPLACE(@SearchDate,'-','')
CREATE TABLE TextData([SEMO_Data] [nvarchar](max) NULL)
Select @url = 'http://semorep.sem-o.com/DataCollection/DataSets.asmx/queryDatasetXML?DatasetName=SET_CAL&User=primplims@gmail.com&Password=testsemo&FromDate=20130103&ToDate=20130111&P1=Energy&P2=Statements&P3=Initial&P4=&P5='
EXEC @hr=sp_OACreate 'WinHttp.WinHttpRequest.5.1',@win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win, 'Open',NULL,'GET',@url,'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OAMethod @win,'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
INSERT XMLParsing.dbo.TextData(SEMO_Data)
EXEC @hr=sp_OAGetProperty @win,'ResponseText'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr=sp_OADestroy @win
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
这是我上一个问题的后续。我希望如果我发布一个新的问题,会更容易看到。
1条答案
按热度按时间3hvapo4f1#
我知道已经太晚了,2022年,但我今天遇到了同样的问题,这为我解决了:
https://stackoverflow.com/a/38918970/1750527
剧透:在SSMS外部运行的查询的默认文本大小为2048。
这样它才能正常运行。