2

我正在编写一个从 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 

这是我上一个问题的后续。我希望如果我发布一个新问题会更容易。

4

1 回答 1

0

我知道为时已晚,2022 年,但我今天遇到了同样的问题,这为我解决了:

https://stackoverflow.com/a/38918970/1750527

剧透:在 SSMS 之外运行的查询的默认文本大小为 2048。我需要添加一个

SET TEXTSIZE 2147483647;

在我的脚本之前,使其正常运行。

于 2022-03-03T03:31:22.483 回答