Crystal Reports:数据库登录失败

时间:2012-05-19 06:54:18

标签: c# asp.net crystal-reports

我在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连接到数据库

我期待着你的回答。提前谢谢。

5 个答案:

答案 0 :(得分:5)

呃,甲骨文。 :)通常我不会将系统DSN与Crystal一起使用,但对于Oracle而言,它是我能够连接它的唯一途径。我记得,您需要确保在" 32位ODBC Data Soruce Administrator"中的服务器上设置了DSN for Oracle。这是我能够成功通过Crystal连接Oracle的唯一途径。

通过.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);