SSRS - Excel 将报表部署到本地主机报表服务器时出现数据源错误

SSRS - Excel data source error when report deployed to localhost report server

我需要有关部署到本地主机的 SSRS 报告的帮助,该报告使用 ODBC 数据源从 excel 文件中检索数据。 通过 BIDS 2008 预览同一报表时,它会按预期显示结果。但是在将报告部署到 BIDS 为 运行 的同一台计算机(本地主机)上的报告服务器后,它会出现以下错误。

错误:抛出 Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:,Microsoft.ReportingServices.ReportProcessing.ReportProcessingException:无法创建与数据源 'dsInvoice' 的连接。 ---> System.Data.Odbc.OdbcException: 错误 [IM002] [Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

我尝试过共享数据源和自定义数据源,但都没有用。当我查找此错误时,它提到我需要在 %windir%\SysWOW64\odbcad32.exe 下使用 32 位 ODBC Administrator 工具,这就是我正在使用的,但是也没有用。我是本地计算机的管理员。

以下是机器的一些信息:

  • Windows 7 64 位
  • SQL 服务器 2008 R2
  • Office 2010 32 位

重现错误的步骤:

  1. 创建 Microsoft Excel 驱动程序用户 DSN - Test_Excel_Driver - 在 %windir%\SysWOW64\odbcad32.exe

  2. 使用 BIDS 2008 和 select 数据源创建 SSRS 报告作为 ODBC 嵌入式连接,连接字符串如下 - Dsn=Test_Excel_Driver;dbq=C:...\测试 Excel.xlsx;defaultdir=C:...\;driverid=1046;fil=excel 12.0;maxbuffersize=2048;pagetimeout=5

  3. 在 BIDS 中预览报告 - 工作正常!

  4. 使用完全权限将报表部署到本地主机 SSRS 报表服务器。在报表管理器中点击报表出现以上错误

您是否在 用户 DSN 选项卡下创建了 DSN?如果可以,您可以尝试在 File DSNSystem DSN 下创建它并重试吗?

首先使用 OLEDB 而不是 ODBC 会更容易上手,OLEDB 的连接字符串如下所示:

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";

然后在 SSRS/BIDS 中单击数据源屏幕中的 "Test Connection" 时,您可能会看到此错误:

The 'Microsoft.ACE.OLEDB.12.0' provider is not registered on the local machine.

文档指出 MS Access 驱动程序(包括 OLEDB 驱动程序) 在 x86 平台下工作,在 x64 或 AnyCPU 平台下不兼容。然而,这似乎是不真实的。参考:

首先下载安装程序,确保 勾选 _64.exe 版本:http://www.microsoft.com/en-us/download/details.aspx?id=13255

  1. 将 AccessDatabaseEngine_x64.exe 解压到一个文件夹中以获取 AceRedist.msi 和 Data.cab 文件。
  2. 在管理员模式下打开命令提示符
  3. cd 到您解压缩的文件夹并使用被动参数执行 MSI:

AceRedist.msi /passive

在这些步骤之后,我设法 运行 在 x64 或 AnyCPU 构建配置中构建应用程序(以及没有 BIDS 的 SSRS)。这解决了问题。