我在ASP.NET(C#)中有应用程序,我在其中使用Sap Crystal Reports for Visual Studio。在VS中,一切都很完美。但是,当我将其部署到IIS“数据库登录失败”时,会发生错误。当我设置CrystalReportViever“启用数据库登录提示”时,它让我要求输入用户名和密码,但不会生成错误,也不会显示报告。我设置“启用数据库登录提示”仅用于测试目的,否则我发送登录参数 ReportDocument.SetDatabaseLogon(用户,密码,“我的dsn名称”,“”)。再一次,VS中的一切都很完美。 我在用: - Windows 7 Enterprise 64位 - Visual Studio 2010(C#) - Sap Crystal Reports,VS 2010版 - IIS中的我的应用程序池标识是NetworkServise - 我正在汇集Oracle存储过程中的数据 - 我正在使用System DSN连接到数据库
我期待着你的回答。提前谢谢。
答案 0 :(得分:5)
通过.Net(C#或VB),这是另一个故事。在这种情况下,我不认为您的App Pool标识会很重要,因为您可能会使用Oracle用户名/密码进行连接。
我回答的问题中有90%涉及Crystal Reports并更改连接信息。我在一个包装器中使用了一些代码,这些代码在我的博客文章中适用于我:
http://www.blakepell.com/2012-05-22-crystal-reports-extension-methods
用户名是oracle用户名,密码是oracle密码,服务器名称是DSN的名称。不要问我为什么,但这总是对我有用。 :P
答案 1 :(得分:2)
我们遇到了类似的问题/错误消息:CR在大多数PC上运行良好,包括生产服务器,但在一个特定的开发者PC它没有。我们检查了数据库源代码驱动程序和" SQL Native Client"在" SQL Server客户端"和#34; SQL Server Native Client"在场。我们从这里http://www.microsoft.com/en-us/download/details.aspx?id=11988(对于64位操作系统)安装了2005版本,它开始工作。
答案 2 :(得分:1)
感谢大家的时间。
之前我使用过用户DSN并且“无法打开连接。我在部署应用程序时无法打开连接'报告名'.rpt'。之后我将其更改为SystemDSN。以前的错误消失了,但这次发生了“数据库登录失败”错误。
最后,我通过将系统DSN的连接形式更改为Oracle Server来解决了我的问题。现在一切都很好。如果您遇到同样的问题,请考虑这一点。
答案 3 :(得分:1)
我对这个Crystal问题感到非常糟糕,报告在本地和其他服务器上运行,但不适用于我们的生产环境。
问题是Prod服务器上没有安装SQL Native客户端。我们修改了报告以使用OLEDB。
Report Designer ->
Right Click on Background ->
Database ->
Set Datasource location ->
In the 'Replace With:' section, Create a New Connection using OLE DB (ADO) ->
Microsoft OLE DB Provider for SQL Server
我们一直在选择SQL Server Native Client 11.0,这导致部署时出错。
在此之前,我曾尝试过一切,x86 / x64,app pool更改,安装疯狂版本的Crystal 13,就是这样。
答案 4 :(得分:0)
连接字符串错误。您的代码使用以下步骤进行更新:
1.清晰的数据集连接 2.设置一个或多个表格 3.不要设置数据源和数据集。因为你把表格中的数据发送到水晶报表,不需要连接到服务器或数据库 4.刷新报告文件 例如:
MyCrystalReportSource.ReportDocument.DataSourceConnections.Clear();
MyCrystalReportSource.ReportDocument.Database.Tables[0].SetDataSource(MyDataSet.Tables[0]);
MyCrystalReportSource.ReportDocument.Refresh();
MyCrystalReportSource.ReportDocument.ExportToHttpResponse(ExportFormatType.PortableDocFormat, HttpContext.Current.Response, true, reportTitle);