通过作业运行 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 2005 IMAGE 列中存储 20 Meg 文件的最有效方法

    我们将文档存储在 SQL Server 2005 数据库表中 列格式为 Image 每次我尝试存储大于 1 Meg 的 PDF 文件时 它都会以某种方式损坏 NET 中是否有任何特别有效的方法来序列化大文件 10megs 并将其存储到数据库
  • SQL Server中的列级与表级约束?

    A 列级 GO CREATE TABLE Products ProductID INT CONSTRAINT pk products pid PRIMARY KEY ProductName VARCHAR 25 GO b 表层 CREATE
  • Sql Server 的夏令时

    我们正在使用一个以 C Unix 格式存储日期的旧应用程序 C 时间基本上是自 1970 年 1 月 1 日以来的秒数 日期以整数形式存储在 SQL Server 数据库中 我正在为使用这些日期的报告编写视图 到目前为止 我正在使用以下命令
  • Oracle 删除约束级联等效于 Sql Server

    在Oracle中 删除约束PK SAI我使用语法 ALTER TABLE SAISIE DROP CONSTRAINT PK SAI CASCADE SQL Server 中与此等效的是什么 您正在考虑与实际 DELETE 语句相关的 FO
  • 错误:不支持的 PIVOT 列类型:文本

    我正在尝试执行 PIVOT 但出现错误 我正在尝试查看哪些患者接受了多次间隔治疗 该列是文本类型 我尝试在查询中将列类型转换为 VARCHAR MAX 但仍然收到错误 这是我的代码 SELECT patientname IntervalNa
  • 从 Django 调用 Postgres SQL 存储过程

    我正在开发一个带有 Postgresql 数据库的 Django 项目 我编写了一个可以在 Postgres 上完美运行的存储过程 现在我想从 Django 1 5 调用该存储过程 我已经编写了代码 但它提示错误 CREATE FUNCTI
  • 当从属文本框中没有输入文本时,如何让 gridview 显示所有表格行?

    下面的代码可以正常工作 并根据文本框中输入的文本过滤我的网格视图 当我的文本框中没有输入任何文本时 我没有得到任何结果 并且无法理解为什么 我的问题 如何让gridview显示all当文本框中没有输入文本时表行 MSSQL Search n
  • SQL Server:将表达式转换为数据类型 bigint 时出现算术溢出错误

    这是我的查询顺序 SELECT CASE WHEN BarCode IS NOT NULL AND ExternelBarCode IS NULL THEN BarCode WHEN BarCode IS NULL AND Externel
  • 如何拥有引用另一个表的检查约束?

    我在 SQL Server 2008 数据库中有以下表 tblItem 其中有一个ItemID field 好项目 它还有一个 ItemID 字段 并且有一个指向 tblItem 的外键 tblBadItem 它也有一个 ItemID 字段
  • 使用存储过程中的 Select 查询将单个变量分配给多行

    我的查询是使用 Select 将单个变量分配给多行 存储过程中的查询 例如 我从 Employee 表中获取 10 个 比如 1 到 10 个员工 ID 声明 id int select id EmpId from Employee sel
  • 插入具有只读主键列的表

    我正在使用一个使用 sql server 数据库的应用程序 我试图在表中插入一行 如下所示 该表有一个主键 prodNum 这是自动生成的密钥 当我尝试向表中插入一行时 如下所示 在行中intResult oSglProdTableAdap
  • 没有提示指令的直连接中表的顺序是否会影响性能?

    所有基于 SQL 的 RDBMS 10 年前的版本 直接连接查询 没有提示指令 中的表顺序是否会对最佳性能和内存管理产生影响 听说最后一个join应该是最大的表 您的数据库的查询优化器如何处理这种情况 回答你的问题 是的 表的顺序在连接中有
  • Dapper 或 MySql 未找到包含句号“.”的存储过程。

    我有一个简单的 C 控制台 它使用 Dapper ORM 调用本地 MySql 数据库 以执行名为的存储过程users UserCreate 但是 当运行查询时 我收到一个异常 在数据库 用户 中找不到过程或函数 UserCreate Bu
  • SQL Server 查询中 UNION ALL 与 OR 条件

    我必须根据表上不存在的条件选择一些行 如果我使用如下的 union all 它会在不到 1 秒的时间内执行 SELECT 1 FROM dummyTable WHERE NOT EXISTS SELECT 1 FROM TABLE t WH
  • Microsoft SQL:CASE WHEN 与 ISNULL/NULLIF

    除了可读性之外 在防止 SQL 中的除以 0 错误时 使用 CASE WHEN 语句与 ISNULL NULLIF 相比还有什么显着的好处吗 CASE WHEN BeginningQuantity BAdjustedQuantity 0 T
  • 告诉我 SQL Server 全文搜索器疯了,不是我疯了

    我有一些客户具有用户正在搜索的特定地址 123 通用方式 数据库中有 5 行匹配 ResidentialAddress1 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC WAY 123 GENERIC
  • SQL Server 中的 FIFO 查询

    我正在构建一个库存管理应用程序c with SQL server 我想做一个FIFO从我的表查询 我以可变价格购买了相同的产品 之后我卖掉了其中一些 我想根据 先进先出 进行查询BatchDate柱子 所以我想通过PurchasePrice
  • 更改表添加列并在同一条件 IF 语句中更新新列

    我正在尝试添加列并在同一 if 语句中更新它 BEGIN TRAN IF NOT EXISTS SELECT 1 FROM sys columns WHERE Name N Code AND Object ID Object ID N Te
  • SQL服务器超时

    我的应用程序是在经典 asp 上开发的 但也使用 asp net 因为我正在将应用程序迁移到 Net 上 它使用 SQL Server 作为数据库并托管在 Windows Server 2003 上 现在的问题是应用程序在很长一段时间内继续
  • 从 MS Access 调用存储过程会导致错误 3146

    当我使用下面所示的代码从 MS Access 前端调用 SQL Server 存储过程时 它停止运行并抛出运行时错误 3146 这个存储过程在 SQL Server 中工作正常 但是当我从 MS Access 运行时 它首先工作 但突然停止

随机推荐

  • 如何在标准 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