通过作业运行 SP 时响应数据截断

2024-01-30

Subject:

我每个月都会创建一份报告。报告的创建包括 2 个步骤:

  1. 从我们的服务获取 XML 并将其存储在数据库中;
  2. 解析 XML 并创建文件。

在过去的几个月里,我以手动模式创建了报告。现在我想自动化这些东西。 但这里来了一个

Problem:

第二步(解析 XML 和文件创建)运行得非常顺利,但在第一步中我观察到了奇怪的行为。

我得到了获取 XML 的存储过程:

ALTER PROCEDURE [Structure].[GetXML]
    @LastActDate date,
    @CurActDate date
AS
BEGIN
    SET NOCOUNT ON;

    begining:

    DECLARE @URI varchar(2000),
            @methodName varchar(50),
            @objectID int,
            @hResult int,
            @setTimeouts nvarchar(255),
            @serv nvarchar(255) = 'http://example.com/docs/',
            @result nvarchar(max) = ''

    DECLARE @t TABLE(Resp nvarchar(max))

    declare @timeStamp nvarchar(50) = convert(nvarchar(50),CURRENT_TIMESTAMP,127)

    declare @CurDate date = dateadd(day,0,getdate())

    --EXEC @hResult = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @objectID OUT
    EXEC @hResult = sp_OACreate 'MSXML2.XMLHTTP', @ObjectID OUT

    SELECT  @URI = @serv + '.newchange?ds='+CONVERT(nvarchar(10),@LastActDate,104)+'&df='+CONVERT(nvarchar(10),@CurActDate,104)+'&pardaily=1',
            @methodName='GET',
            @setTimeouts = 'setTimeouts(9000,90000,900000,9000000)' 

    EXEC @hResult = sp_OAMethod @objectID, 'open', null, @methodName, @URI, 'false' 
    EXEC @hResult = sp_OAMethod @objectID, @setTimeouts
    EXEC @hResult = sp_OAMethod @objectID, 'send', null 

    INSERT INTO @t
    EXEC sp_OAGetProperty @objectID, 'responseText'

    SELECT top 1 @result = Resp 
    FROM @t

    if @result is null
    begin
        delete from @t
        exec sp_OAGetErrorInfo @objectID
        exec sp_OADestroy @objectID 
        goto begining
    end
    else
    begin
        INSERT INTO Structure.MonthlyRow 
        SELECT @timeStamp, @result 
    end
END

当我像这样运行这个 SP 时

EXEC [Structure].[GetXML] '2016-06-01', '2016-07-01'

我吵了一场Structure.MonthlyRow表与正确的timestamp and response(平均长度约为 70k 符号)

这是表的创建脚本:

CREATE TABLE Structure.MonthlyRow(
    [timestamp] nvarchar(50) NOT NULL,
    [RowResp] nvarchar(max) NULL,
 CONSTRAINT [PK_dDayly] PRIMARY KEY CLUSTERED ([timestamp] DESC)) 

如果我创建一个启动此 SP 的作业,我会在表中得到一行结果,结果的长度为512 个符号!它是 XML 的正确部分,看起来像是从nvarchar(max) to nvarchar(512),但我没有使用长度为 512 的变量或表列。

我尝试过什么:

  1. 以用户身份运行使用我在“作业步骤”属性中的帐户;
  2. 作业按计划或手动启动;
  3. Add WITH EXECUTE AS OWNER in SP;
  4. 尝试使用WinHttp.WinHttpRequest.5.1 and MSXML2.XMLHTTP.

问题:

可能有什么问题?为什么我在手动运行 SP 时得到正确的结果,而在将 SP 作为作业步骤运行时仅得到 512 个响应符号?

Note:

是的,我知道从 Web 服务获取 XML 可以通过 PHP、C# 甚至 PowerShell 更好地处理,如果我找不到解决方案,我将使用其中之一。


将此行添加到 sp 的顶部或之前的作业中EXEC你的sp

SET TEXTSIZE 2147483647;

问题是作业设置了默认值

SET TEXTSIZE 1024

这将返回的数据限制为 1024 个字符(512 个字符)nchars)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过作业运行 SP 时响应数据截断 的相关文章

  • 捕获 SQL Server 时态表删除上的 SysEndTime

    是否可以使用 OUTPUT 关键字捕获 SysEndTime 时间时间戳 例如 DECLARE MyTableVar TABLE sysendtime datetime2 DELETE FROM dbo someTable OUTPUT D
  • CROSS APPLY 不适用于 SQL SERVER 2000?

    如何在 SQL Server 2000 中使用与 CROSS APPLY 等效的功能 我有一个函数返回传递的 id 的顶级父级 ALTER Function dbo fn GetTopParentRiskCategory RctId int
  • TSQL 返回 NO 或 YES,而不是 TRUE 或 FALSE

    如果某些列返回 FALSE 如何显示不同的值 例如 COLUMN BASIC 返回 FALSE 但我需要向用户显示 YES 或 NO 情况为 FALSE 返回 NO 如果是 varchar 或 bit 则处理 NULL case when
  • WinForms 应用程序设计 - 将文档从 SQL Server 移动到文件存储

    我有一个连接到 SQL Server 的标准 WinForms 应用程序 该应用程序允许用户上传当前存储在数据库中的文档 在使用图像列的表中 我需要更改这种方法 以便将文档存储为文件 并将文件的链接存储在数据库表中 使用当前的方法 当用户上
  • 将单个列连接到逗号分隔的列表中[重复]

    这个问题在这里已经有答案了 我已经看到了人们将单个列滚动到逗号分隔列表中的多个示例 但我需要更多 这是我需要的数据和结果的示例 DECLARE SalesPerson table SalesPersonID int SalesPersonN
  • SQL Server 2008 R2 的 Try_Convert

    我正在使用 SQL Server 2008 R2 并且有一个VARCHAR我想要转换为的列DECIMAL 28 10 using CONVERT 但其中许多行的格式错误 因此无法将它们解析为数字 在这种情况下 我只想通过将结果设置为 0 或
  • 插入后用触发器更新多行(sql server)

    我有一个表 orderDetails 包含订单的产品 产品编号 color size quantity 和一个表库存 产品编号 size color stock 订单完成后 我使用此查询将项目插入表中orderDetails INSERT
  • 查询所有表数据并进行索引压缩

    是否有人碰巧拥有一个通用 SQL 语句 可以列出数据库中每个分区的所有表和索引及其当前的压缩设置 Thanks 编辑 这是我尝试查询表所得到的 但我不确定连接是否正确 我得到了重复项 这似乎是由于索引的存在引起的 SELECT t name
  • 使用 Python 中的 SQL Server 存储过程 (pyodbc)

    我有一个存储过程 代码 DECLARE RC int DECLARE id varchar 13 DECLARE pw varchar 13 DECLARE depart varchar 32 DECLARE class varchar 1
  • 使用 WHILE 创建虚拟数据

    我尝试使用 a 在表中插入一些虚拟数据WHILE 但它运行得非常非常慢 我在想也许我写的代码不正确 你能看一下并确认一下吗 Insert dummy data DECLARE i int Content int SET i 5001 WHI
  • 使用 Switch 的报告服务表达式

    我无法让这个表达式与报告服务一起使用 我必须使用 IF 和 ELSE IF 语句 感谢您的任何建议 Switch IsNothing Fields field date Value Fields set flag Value 1 Decli
  • PDO SQLSRV 和 PDO MySQL 在获取 int 或 float 时返回字符串

    当您获取时 PDO MS SQL Server 和 PDO MySQL 都会返回一个字符串数组 即使列的 SQL 类型本应是数字类型 例如 int 或 float 我设法解决了这个问题 但我想了解为什么它们一开始就这样设计 是不是因为PDO
  • 在 Sql Server 中转换为日期时间 MM/dd/yyyy HH:mm:ss

    如何将给定的日期格式转换为MM dd yyyy HH mm ss 我尝试了下面这个但没有实现 谁能帮我 SELECT CONVERT VARCHAR 20 GETDATE 120 SQL Server 2005及以上版本支持 SELECT
  • 对多个数据库执行 SQL 查询

    我知道我的帖子与该论坛中的其他帖子的标题非常相似 但我真的找不到我需要的答案 这是我的问题 我的 Windows Server 上运行着 SQL Server 在我的 SQL Server 中 我有大约 30 个数据库 它们都具有相同的表和
  • Amazon RDS for SQL Server 是否支持 SSIS?

    从谷歌搜索中读到一些相互矛盾的答案 不确定答案是是 否还是可能 我觉得读的时候已经很清楚了this http docs aws amazon com AmazonRDS latest UserGuide CHAP SQLServer htm
  • 选择具有 SQL Server XML 列类型的特定行

    我正在尝试从类似于以下定义的表中选择数据 Column Data Type Id Int DataType Int LoggedData XML 但我只想选择具有特定 DataType 值并且在 LoggedData 列中包含字符串 或评估
  • 单独的逗号分隔值并存储在sql server的表中

    我有一个存储过程 它将逗号分隔的值作为输入 我需要将其分开并需要将其作为单独的行存储在表中 令 SP 的输入为 Rule ID ListType ID Values 1 2 319 400 521 8465 2013 我需要将它存储在一个名
  • SQL Server 列名区分大小写

    我使用的数据库具有 French CI AS 排序规则 CI 应该代表不区分大小写 但无论如何都是区分大小写的 我试图理解为什么 我断言这一点的原因是 使用 GIVEN 案例设置进行批量插入失败 但使用另一个 Given 案例设置则成功 例
  • 如何获得顶部带有千位分隔符的数字?

    SELECT count FROM table A 假设结果是8689 我怎样才能将它转换为8 689在 SQL Server 上 尝试这样 select replace convert varchar convert Money coun
  • Visual Studio 2010 中的数据库设计器

    我需要创建一个全新的 Sql Server 2008 数据库 并希望使用 Visual Studio 2010 Ultimate 中的数据库项目 我已经创建了该项目并在下面添加了一个表格dbo架构 桌子 sql仅以纯文本形式显示 但带有颜色

随机推荐

  • 如何在标准 ML 中检查整数的以 2 为底的表示形式? [复制]

    这个问题在这里已经有答案了 我正在尝试在 SML 中实现重复平方算法 我希望它是尾递归的 目标是将所有 x k 相乘 其中 k 是 2 m 2 m 是 n 的二进制表示形式中的 1 例如 对于 x 25 计算 x 1 x 8 x 16 因为
  • 打印两次

    我出于教学目的编写了一个简单的程序 除了打印出名称和您选择的计算答案的部分之外 一切正常 if 语句似乎执行了两次 就好像它在前进之前向后退了一步 它将打印出 您想继续吗 但不会提示用户输入是 否 而是会再次打印出计算的答案 然后询问他们是
  • CodeDom:编译部分类

    我正在尝试编译文本文件中的代码以更改 WinForms 应用程序主窗体上的 TextBox 中的值 IE 将另一个带有方法的分部类添加到调用表单中 该表单有一个按钮 button1 和一个文本框 textBox1 文本文件中的代码是 thi
  • 错误:_handle onLaunch iOS 9 中的特定操作

    我在 iOS 9 上收到以下错误 UIApplication handleNonLaunchSpecificActions forScene withTransitionContext completion unhandled action
  • PHP - 将 MS Word 特殊字符(^l、^p、^s)更改为“,”

    所以我拥有的是一个 MS Word docx 文件 其中包含一些未真正排序的数据 示例输出 1 姓氏 名字 地址 城市 州邮政编码 通过执行 Ctrl Shift 我可以查看文件中存在的所有特殊字符 ETC 然后用 替换它们作为分隔符 然后
  • MDX SSAS - 最大测量日期

    只需要在多维数据集中的所有测量中获取最大日期即可 例如 DateID is a Dimention Measure First Measure Second Measure 如何获取列表MAX DateID 来自我的立方体中的所有措施 以下
  • 处理运行时创建的 OLEObject 命令按钮的事件

    我已经为这个问题苦苦挣扎了一段时间 我想做一些非常简单的事情 我想在运行时创建多个命令按钮 然后用一个过程处理这些命令按钮的事件 所以我构建了一个 withevents 类来处理自动化 但我的代码不起作用 当我运行 Test 时 会创建 C
  • 有没有办法将“a”标签链接取消设置为默认颜色

    我有一个 a 标签 它是另一个网页的正常链接 我想禁用默认链接外观 除非鼠标光标悬停在链接上 此时应恢复默认的正常链接外观 这是我到目前为止所尝试过的 HTML a href example com example a CSS a colo
  • ASP.NET MVC URL 生成性能

    ASP NET MVC 的一点基准测试 查看页面代码 public string Bechmark Func
  • 当您不知道列数时,使用所有列按顺序对矩阵进行排序

    我有一个从递归左连接动态生成的数据框 如何使用order当我事先不知道列数时应用到所有列的函数 我希望结果首先在第一列排序 然后在第二列排序 在下面的示例中 我有四列 set seed 123 A lt matrix rep 1 25 4
  • 直接上传图片到twitter

    我需要帮助在 Windows Phone 7 中将图像直接上传到 Twitter 我已经完成了 twitter 的 oauth 流程 也可以更新推文 但我无法使用 wp7 将图像上传到 twitter 我已经通过使用 Hammock Win
  • 如何在不加载程序集的情况下获取程序集的版本?

    大型程序的一个小功能会检查文件夹中的程序集 并用最新版本替换过时的程序集 为了实现这一点 它需要读取现有程序集文件的版本号 而不实际将这些程序集加载到执行进程中 我发现了以下内容在本文中 http blogs msdn com alejac
  • 相当于在MySQL中处理字符串的explode()

    在 MySQL 中 我希望能够搜索 31 7 当另一个值 7 31 我将使用什么语法来分解 MySQL 中的字符串 在 PHP 中 我可能会使用explode string 并将它们放在一起 MySQL 有没有办法做到这一点 背景 我正在处
  • 如何获取 gcloud 的 shell 命令完成(自动完成)?

    I tried both 1 the official Google installation for Ubuntu https cloud google com sdk docs install deb and 2 the one lin
  • 正则表达式验证错误

    我在正则表达式验证方面遇到问题 请参阅如果我将验证放在代码后面 例如 RegexValidator 0 9 MessageTemplateResourceName INVALID PHONE MessageTemplateResourceT
  • 如何在 Angular 8 中存储像 jwt token 这样的数据?是否有另一种使用本地存储或会话存储安全存储的方法?

    我正在使用 JWT 令牌来授权从 Angular 8 网站向我的 API 发出的请求 但是我应该在哪里存储这个用户看不到的令牌呢 我尝试过使用服务 但刷新页面后令牌丢失 您可以使用 cookie 来存储令牌 而不是本地存储或会话存储 但这并
  • 使用脚本编辑器将表情符号 unicode 从 Google 表格插入到电子邮件中

    我正在尝试使用脚本编辑器从谷歌表格中获取一些文本来发送电子邮件 该文本包含表情符号 unicode 但是 当发送电子邮件时 它会打印纯文本而不是显示 unicode 表情符号 我在电子邮件中看到的内容 9889 some text here
  • Boost.Spirit:解析期间设置子语法

    为了处理大量的编译时间和语法的重用 我将语法组成了几个按顺序调用的子语法 其中之一 称为 SETUP 语法 提供了解析器的一些配置 通过符号解析器 因此后面的子语法在逻辑上依赖于该语法 再次通过不同的符号解析器 因此 在解析SETUP之后
  • 控制台应用程序 - DbContext 实例不能在 OnConfiguring 内部使用

    我正在使用 Asp Net Core 控制台应用程序 Entity Framework Core 和工作单元存储库模式 当我使用多线程函数时 出现以下错误 DbContext 实例不能在 OnConfiguring 内部使用 因为此时它仍在
  • 通过作业运行 SP 时响应数据截断

    Subject 我每个月都会创建一份报告 报告的创建包括 2 个步骤 从我们的服务获取 XML 并将其存储在数据库中 解析 XML 并创建文件 在过去的几个月里 我以手动模式创建了报告 现在我想自动化这些东西 但这里来了一个 Problem