SSRS 给出错误,因为 HResult E_FAIL 已从对 COM 组件的调用返回

SSRS giving error as HResult E_FAIL has been returned from a call to a COM Component

当我 运行 SSRS 报告的数据有 150 000 个字符时,它给出错误

HResult E_FAIL has been returned from a call to a COM Component

我正在使用单个文本框来显示此数据。对于任何其他数据,它都可以正常工作。我在其他一些论坛上搜索过,他们说你只能在 2008 年使用 SSRS 文本框打印 32,000 个字符,但是为什么它适用于其他一些具有 150,000 个字符的数据而不是这个特定数据。

数据如下

1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890121234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 1234567890 

对于正常数据,它工作正常。 SQL server 列的数据类型是nvarchar(max) 并且它只有150 000 这样的数字作为数据。

有时它 returns 作为值的结果不在预期范围内,但这是一个文本列,所以为什么它然后将其视为数字。另一个数据示例是将 100000 个字符作为字符串,然后将其余 50000 个字符作为数字,用空格分隔,例如上面给出的 1234567890 1234567890 这样最多 50000 个字符长度。

我不知道如何处理这个错误。

你能尝试一个不涉及任何table的数据集吗?

以下在 SQL2008R2

的简单报告中起作用
select 
    Col1, len(Col1) AS LenCol1,
    Col2,
    Col3, len(Col3) AS LenCol3
from
(
select 
    replicate(cast('abcdefg hijklmnop' as nvarchar(max)), 10000) + char(13) +convert(nvarchar(20), getdate(), 120) as Col1,
    12345 as Col2,
    replicate(cast('1234567890 1234567890' as nvarchar(max)), 7000) + '------' +convert(nvarchar(20), getdate(), 120) as Col3
) as src

我们还没有找到技术错误的解决方案,但在与现场人员讨论后,我们得出的结论是数据是单行的,如果在数据中插入换行符,那么 SSRS 工作正常.因此,我们针对此问题提出了数据修复,而不是继续解决 SSRS 的技术错误。我们没有对 SSRS 做任何更改。如果在数据中插入换行符,则它可以正常工作。