【问题标题】:Cannot read next data row error in subreport无法读取子报表中的下一个数据行错误
【发布时间】:2016-09-09 13:33:43
【问题描述】:

我有一个运行良好的报告,但是当包含在子报告中时会抛出这个错误:

报告处理过程中发生错误。 (rsProcessingAborted) 无法读取数据集 PersonalDetails 的下一个数据行。 (rsErrorReadingNextDataRow) 有关此错误的更多信息 导航到本地服务器计算机上的报表服务器,或启用 远程错误

数据集:

SELECT  CAST(College_Year AS VARCHAR(10)) as CollYear
,[Photo_File_Name],[Learner_ID]
,[Gender],[Surname],[Forename_1],[Forename_2]
,[Learner_Date_Of_Birth],[Age],[AgeAt31Aug]
,[AgeGroup],[Title],[Ethnicity_Code]
,[Ethnicity],[Disability_Code],[Disability]
,[Learning_Difficulty_code],[Learning_Difficulty],[learner_Status]
,[Student_Addr_1],[Address_Locale],[Address_Town]
,[Address_County],[Post_Code],[Student_Home_Address]
,[Mobile_Number],[Home_Telephone],[Tutor]
,[Tutor_Name],[Tutor_Department],[EMA]
,[ALG],[Drop_Out_Status],[ALS_Cost]
,[School_Code],[School_Name],[Staff]
,[New_Learner],[Prior_Attain_Level],[Decesed]
,[Drop_Out_Date],[Record_Created],[Status_Drop_Out_Code]
,[Post_Code_DU_Uplift],[UCI_Number_S19],[DU_Code]
,[DU_Factor],[Main_Qualification],[Main_Qualification_Code]
,[Enhanced_Funding_L28a],[Nationality_Code],[Nationality]
,[About_Courses],[For_surveys],[Contact_Override]
,[By_post],[By_Telephone],[By_email]
,[NI_Number],[ULN],[L14]
,[Registered_disabled],[ALS_Asses],[Pastor_Tutor]
,[Pastor_Tutor_Title],[Pastor_Tutor_Name],[Date_Entered_the_UK]
,[L29],[Is_Staff],[Enrol_Status]
,[Texting_OptOut],[Learner_email_address],[Learning_Assessment_139A]
,[LDDPH_Health_Prob],[English_1St_Lang]
  FROM [NG].[dbo].[IM_ST_Students_vw]
where 
learner_ID = @learner_ID order by CAST(College_Year AS VARCHAR(10)) desc

感谢任何帮助。

谢谢, 阿尔

【问题讨论】:

  • 要修复这个错误,你需要检查一些事情,比如检查你的数据集,它也可能与安全问题有关,没有被授予表的一部分。请检查您的用户是否有权访问表/数据库。此外,如果可能,通过删除现有数据集再次创建相同的数据集。如果您遇到问题,请告诉我。 - 你也应该检查this
  • @pedram - 是的,我替换了数据集。不知道为什么这个问题发生在许多报告使用的子报告中......
  • Aruna,和上一个问题类似,需要缩小问题空间。在这一刻,我们不知道您的问题是来自 select、from 还是 where。尝试不带列的查询(从...中选择 1)。如果它可以执行,那么你的问题源于一个列。然后你需要在你的实验中使用二分搜索的思想来快速找到你遇到问题的确切列。

标签: sql reporting-services dataset ssrs-2008 subreport


【解决方案1】:

对错误有深入的描述

问题

访问 IT Analytics 报告时,出现错误“错误已 在报告处理期间发生。无法读取下一个数据行 数据集'数据集名称'。”发生。此外,处理多维数据集 与报告相关也可能导致问题。

错误

在 IT 分析报告中:

报告处理过程中发生错误。 (rsProcessingAborted) 无法读取数据集“数据集名称”的下一个数据行。 (rsErrorReadingNextDataRow) 有关此错误的详细信息,请导航到本地服务器计算机上的报表服务器,或启用 远程错误。

在 SQL 中尝试处理多维数据集或维度时:

服务器发送了一个无法识别的响应。 "<invalid-character>, 十六进制值 0x<hex-value>,是无效字符。线 <line-#.>,位置<position-#>。 (System.Xml)

原因

如果 XML 字符无效(即某些非字母数字字符) 存在于数据中,Microsoft SQL Server 分析服务器 (SSAS) 可能无法处理多维数据集及其尺寸。这是因为 XML 保留某些本质上非字母数字的字符 用作编程代码。当这些出现在数据中时,XML 会尝试 将它们作为代码的转义码处理,但实际上它们并不是 代码,它会导致错误。因此,这不是限制或 由 IT 分析产品或 SSAS 引起的问题,但由 用户数据的内容,但它已被填充。这可能会发生 如果数据损坏(SQL 服务器崩溃、错误导入等)

有关这方面的更多信息,请访问 Microsoft 的网站:

http://technet.microsoft.com/en-us/library/microsoft.analysisservices.dataitem.invalidxmlcharacters.aspx http://technet.microsoft.com/en-us/library/microsoft.analysisservices.invalidxmlcharacters.aspx http://msdn.microsoft.com/en-us/library/microsoft.analysisservices.dataitem.invalidxmlcharacters(v=sql.90).aspx

解决方案

(1) 本文仅用于排查和解决如上所示的确切错误。如果用户看到不同的变体 这些错误,这篇文章很可能不适用。

(2) 为便于阅读,受影响的字符(即无效 XML 字符)从此处引用 为“非字母数字字符”,因为这就是它们的显示方式 给用户。这并不表示也不应与, 但是,任何非字母数字字符都是一个问题,但仅限于 指那些会影响 XML 的,如 URL 中所述 上面原因部分中的参考资料。

(3) “非字母数字字符”是指发现通常不应使用的任何非标准或无效字符。例如, 版权符号、商标符号、线条图形或看起来 是东方字母(在这种情况下是损坏的数据)。所有的字母, 数字和标准字符,例如连字符、句点、+ 符号、 等等,都是可以接受的。

(4) 赛门铁克技术支持无法根据原因协助用户深入解决此问题:他们的数据是 无效,SSAS 直接无法处理数据。 ITA 因而 影响,但不是问题本身的原因。用户必须 自己发现并解决包含的任何不良数据 非字母数字字符。如果您需要,请联系您的 DBA 协助执行此操作。

首选解决方案:直接更正数据。

检查以验证哪些报告看到此问题并记下其报告名称。 这通常只发生在单个报告或少量报告中;全部 其他人工作顺利。

使用受影响产品自己的报告(不是 ITA 报告)或 SQL 脚本,定位和查看那些与想要的相似的 用于 IT 分析。任何列和字段是否明显包含 非字母数字字符?例如,如果“成本中心”是 显示为存在错误问题的数据集,请查看 通过单击报告按钮 > 所有报告 > 服务找到的报告 和资产管理 > 组织类型 > 成本中心 > 列表 按位置划分的成本中心。他们的名字是否包含无效 字符?

Cost Center Name
Springfield©
Lindon

在第一个成本中心的名称中有一个非字母数字字符, 版权符号“©”。没有意义 成本中心名称中的版权符号,因此很突出 视觉上是无效的。这个字符可能是也可能不是保留的 XML 字符。如果是这样,SSAS 将无法处理任何多维数据集,并且 引用此工人姓名的维度。基于此,我们知道 至少,成本中心的名称字段具有非字母数字 字符。

这也可以在 SQL 中检查,例如:

USE Symantec_CMDB
SELECT *
FROM vCostCenter
  If the product reports do indeed show such non-alphanumeric characters, change these at their source. For example, for ServiceDesk

用户,如果这些是从 Active Directory 导入的并且问题 存在那里,在那里更改用户名,然后执行更新 导入 ServiceDesk 以更改那里的用户名。一旦改变, 然后尝试重新处理有问题的 IT 分析多维数据集,然后 启用以前未启用的 IT Analytics ServiceDesk 报告 工作然后工作。注:视用量范围而定 非字母数字字符,这可能是一个漫长而乏味的过程 为用户手动修复。

解决方法:更改 SSAS 以忽略非字母数字字符。

运行 Microsoft Visual Studio,最好在 SQL Server 上,或至少在 在有权访问 SSAS 的工作站上。单击“文件”菜单 > 打开 > Analysis Services 数据库。在 服务器字段。单击数据库的下拉字段并选择 要编辑的 SSAS 数据库。单击确定按钮。在解决方案中 资源管理器窗口,向下滚动直到显示维度。双倍的 单击要编辑的尺寸。例如:“计算机”。注意: 要编辑的维度通常非常接近或同名 出现错误时,此处引用的数据集名称。用户 可能需要试验哪一个是正确的编辑, 然而。在“属性”窗口中,单击维度的属性 编辑。例如,“计算机 - 名称”。在“属性”窗口中, 向下滚动直到显示源部分。点击“+”即可 展开 NameColumn 字段。更改“InvalidXmlCharacters”字段 从保留到替换(替换非字母数字 带有“?”的字符)或删除(完全删除 非字母数字字符)。建议全部设置 unicode 和非 unicode 文本属性可能与这些属性无关 可能包含无效的 XML 字符。重复步骤 7 到 11,直到 所有维度和受影响的属性都已更改。点击文件 菜单 > 全部保存。这将提示保存更改。

疑难解答:使用 SQL 帮助查找包含非字母数字字符的列和字段。

虽然赛门铁克技术支持无法提供帮助 解决数据问题,如发现的非字母数字字符 客户的数据,附加的 SQL 脚本“解析表和列 for Non-Alphanumeric Characters.sql”可以帮助用户找到 非字母数字数据。该脚本可以针对任何数据库运行 怀疑有非字母数字字符 IT Analytics 访问的(Symantec_CMDB、ProcessManager、SEPM 等) 用于报告的数据。

注意事项:

(1) 此 SQL 脚本不会删除数据,而只会为 用户。

(2) 一旦用户确定哪些列和字段包含 非字母数字数据,由用户决定如何最好 解决这个问题。建议使用上述解决方案和 解决方法来帮助解决这个问题。

(3) 使用说明 在其中找到脚本。请注意,此脚本将占用 跑的时间极长,不建议跑 生产数据库,至少在生产时间内,如 性能可能会下降。这是因为这个脚本会解析 查找非字母数字的每个表、列和字段值 人物。它不会改变任何东西,只会报告什么是 成立。例如,在一个小型测试数据库上,这需要 7 个小时 跑步。因此强烈建议用户绝对 确定这是问题所在,并且上面列出的解决方案和 甚至在考虑使用此脚本之前,变通方法都不起作用。

Source。他们还有一个脚本,它不会修改您的数据,但会发现潜在问题并向您展示。

2006年的一个人claimed发现一个错误,即数据偶尔转成字符串。我不确定这个人是否正确,如果是,问题是否从那时起得到解决。

【讨论】:

    【解决方案2】:

    在我的例子中是一个没有“公共”权限的存储过程。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-04-07
      • 1970-01-01
      • 1970-01-01
      • 2018-08-23
      • 2018-06-07
      • 1970-01-01
      相关资源
      最近更新 更多