SSRS数据集查询执行失败

问题描述 投票:25回答:17

刚刚将我的项目部署到我的报告服务器上。

我有多个数据集,它们引用该服务器上数据库上存在的视图。

[当我尝试进入任何报告部分时,都会收到此消息:

An error has occurred during report processing. (rsProcessingAborted)
Query execution failed for dataset 'dataset1'. (rsErrorExecutingCommand)
For more information about this error navigate to the report server on the local server machine, or enable remote errors 

有人可以帮忙吗?

sql-server sql-server-2008 reporting-services ssrs-2008
17个回答
10
投票

我启用了远程错误来查明问题所在。

[我确定特定数据集(我的一个视图)中的一列引发错误。

因此,使用工具“ SQL Delta”,我将数据库的开发版本与报告服务器上的实时版本进行了比较。我注意到其中一个视图在开发服务器上有一个额外的列,不在数据库的实时版本上。

SQL Delta生成了我需要运行的脚本来更新实时数据库上的视图。

我运行了这个脚本,重新运行了报告,一切正常。


1
投票

BIGHAP:此问题的简单工作。

使用SharePoint列表时,我遇到了与DataSource相同的问题,并阅读了上面的博客,它们非常有帮助。我在Visual Studio中的DataSource和Data对象名称和查询字段中都进行了更改,并且该查询在Visual Studio中可以使用。我能够将报表部署到SharePoint,但是当我尝试将其打开时,我收到了相同的错误。

我猜测问题是我需要将DataSource和DataSet都重新部署到SharePoint,以便渲染工具中的所有更改都同步。

我将DataSource,DataSet和Report重新部署到sharePoint,它可以正常工作。正如其中一个博客所述,尽管Visual Studio允许我在数据集和数据源中进行更改,但是如果您未将Visual Studio设置为在部署报表时自动重新部署数据源和数据集(这很危险,因为这可能会影响其他报告共享这些对象)可能会发生此错误。

因此,当然,解决方法是在这种情况下,您必须重新部署数据源,数据集和报表以解决问题。


1
投票

我也面临着相同的问题-我检查了以下内容以解决此问题,

  • 如果您最近更改了数据源中的指向数据库名称然后首先检查该报告的所有存储过程是否存在在更改的数据库上。

  • 如果主报告上有多个子报告,请确保每个报告可以完美运行。

  • 还请检查安全面板-用户必须有权访问数据库/该报告的表格/视图/功能。

有时,我们还需要检查dataset1-存储过程。就像您要显示带有user1的报告,并且如果该用户没有提供的access(rights)数据库的(dataset1 database)一样,它将抛出与上述相同的错误,因此必须检查该用户是否具有dbreader的访问权限]在SQL Server中。

此外,如果该存储过程包含其他数据库(Database2),例如

Select * from XYZ inner join Database2..Table1 on ... where...

然后用户也必须具有该数据库的访问权限。

注意:您可以检查此路径上的日志文件以了解更多详细信息,

C:\Program Files\Microsoft SQL Server\MSRS11.SQLEXPRESS\Reporting Services

1
投票

非常感谢,我发现了这篇很棒的帖子。就我而言,执行存储过程的用户没有EXECUTE权限。解决方案是通过在存储过程的末尾添加以下代码,在存储过程内为用户授予EXECUTE权限。

GRANT EXECUTE ON dbo.StoredProcNameHere TO UsernameRunningreports
GO

1
投票

我遇到了同样的错误,但这可以解决我的问题

如果报表已连接到Analysis Server,则向您的Analysis Server模型中的用户(正在访问报表服务器以查看报表的用户)授予所需的权限。为此,将用户添加为模型或多维数据集的角色并将模型部署到分析服务器。


1
投票

使用SSRS,Report Builder 3.0,MSSQL 2008并查询到Oracle 11G数据库,我发现oracle存储过程运行良好,产生了一致的结果,没有错误。当我尝试将数据导入SSRS时,出现了OP查询中列出的错误。我发现仅当删除参数时才加载并显示数据(不是一个好主意)。在进一步检查中,我发现在数据集属性>参数下,我已将开始日期设置为parameterName P_Start并将参数Value设置为@P_Start。

将参数值添加为[@P_Start]可以解决问题,并且在适当的位置安装了数据,数据加载良好。


1
投票

此问题是由孤立的SQL登录引起的。我运行了我最喜欢的sp_fixusers脚本,该错误已解决。上面关于查看日志的建议是一个很好的建议……它使我得到了答案。


1
投票

这可能是您的视图或存储过程的权限问题


0
投票

除了以上答案,可能是由于缺少SQL存储过程SQL函数。例如,这可能是由于功能未从非生产区域迁移到生产(生产)区域。


8
投票

我遇到了类似的错误消息。我能够在不启用远程错误的情况下进行修复。

在Report Builder 3.0中,当我使用Run按钮运行报表时,出现了一个错误警报,说

An error has occurred during report processing. (rsProcessingAborted)
[OK] [Details...]

按下详细信息按钮给了我一个文本框,我在其中看到了此文本:

For more information about this error navigate to the report server
on the local server machine, or enable remote errors
----------------------------
Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)

我感到困惑和沮丧,因为我的报告没有名为'DataSet1'的数据集。可以肯定的是,我什至在文本编辑器中打开了.rdl文件。过了一会儿,我注意到我可以阅读的内容下方的文本框中还有更多文本。完整的错误消息是:

For more information about this error navigate to the report server
on the local server machine, or enable remote errors
----------------------------
Query execution failed for dataset 'DataSet1'. (rsErrorExecutingCommand)

----------------------------
The execution failed for the shared data set 'CustomerDetailsDataSet'.  
(rsDataSetExecutionError)
----------------------------
An error has occurred during report processing. (rsProcessingAborted)

I did具有一个名为“ CustomerDetailsDataSet”的共享数据集。我在SQL Server Management Studio中打开了查询(这是在文本模式下输入的完整SQL查询),并在那里运行它。我收到错误消息,该错误消息明确指向某个表,我一直在使用的列已被重命名和更改。

从那时开始,很容易修改我的查询,使其与新列一起使用,然后将该修改粘贴到共享数据集'CustomerDetailsDataSet'中,然后在报表生成器中轻推报表以识别对报表的更改。共享数据集。

此修复后,我的报告不再触发此错误。


4
投票

我遇到过同样的问题,这与未将安全性授予部分表有关。检查您的用户有权访问该报告使用的数据库/表/视图/功能等。


3
投票

我刚刚处理过同样的问题。确保查询中没有使用快捷方式列出完整的源名称。 Visual Studio可以识别快捷方式,但是您的Reporting Services应用程序可能无法识别数据应来自哪些表。希望能有所帮助。


3
投票

[像这里的其他人一样,我有同样的错误。以我为例,这是因为对其使用的存储过程的执行许可被拒绝。当与数据源关联的用户被授予该权限时,此问题已解决。


3
投票

我有显示错误的类似问题

有关此错误的更多信息,请浏览至报表服务器本地服务器计算机,或启用远程错误查询执行数据集“ PrintInvoice”失败。

解决方案:1)在某些情况下,该错误可能与数据集有关,您始终可以通过转到数据集属性并选择“查询设计器”并尝试“运行”来检查数据集是否正在填充所需的确切数据,如果可以成功能够提取您期望的字段,那么您可以确保数据集没有任何问题,这将我们带到下一个解决方案。

2)即使错误消息显示“对数据集的查询执行失败”,数据源连接还有另一个可能的机会,请确保已连接到具有所需表的正确数据源,并且您有权访问该表数据源。


2
投票

在我的情况下,我为数据集创建了一个新的SSRS报告和新的存储过程。我忘记将存储过程添加到具有执行权限的数据库角色中。将权限添加到具有EXECUTE的SQL数据库角色后,一切都很好!

用户遇到的错误消息为“客户端呈现期间发生错误。报表处理期间发生错误(rsProcessingAborted)。数据集” DataSet1“的查询执行失败。 (rsErrorExecutingCommand)有关更多信息...“


2
投票

对我来说解决方案来自GShenanigan

您需要在SSRS服务器上检出日志文件以了解更多详细信息。它们将位于:“ C:\ Program Files(x86)\ Microsoft SQL Server \ MSRS10_50.DEV \ Reporting Services \ LogFiles \“

我能够在与该视图所在的视图不同的视图引用的数据库表上找到权限问题。我一直专注于对视图数据库的权限,因此这有助于查明错误所在。


1
投票

我也遇到了非常相似的问题,并显示了非常相似的错误消息。我的问题是数据库无法连接。在我们的例子中,我们已经镜像了数据库,并且连接字符串未指定故障转移伙伴。因此,当数据库无法连接时,它永远不会到达镜像并抛出此错误。在我为数据源的连接字符串中指定故障转移伙伴后,它就解决了该问题。

© www.soinside.com 2019 - 2024. All rights reserved.