SSRS - 将报告部署到localhost报告服务器时出现Excel数据源错误

Rom*_*oel 6 odbc dsn sql-server-2008 ssrs-2008-r2

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

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

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

以下是有关该机器的一些信息:

  • Windows 7 64位
  • SQL Server 2008 R2
  • Office 2010 32位

重现错误的步骤:

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

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

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

  4. 使用完全权限将报告部署到localhost SSRS Report Server.单击报表管理器中的报表并获取上述错误.

Jer*_*son 3

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

Provider=Microsoft.ACE.OLEDB.12.0;Data Source=c:\myFolder\myExcel2007file.xlsx;
Extended Properties="Excel 12.0 Xml;HDR=YES";
Run Code Online (Sandbox Code Playgroud)

然后在 SSRS/BIDS 中,当您在数据源屏幕中单击“测试连接”时,您可能会看到以下错误:

“Microsoft.ACE.OLEDB.12.0”提供程序未在本地计算机上注册。

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

首先下载安装程序,确保勾选 _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)。这解决了问题。