1

我在 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,

我期待着您的回答。提前致谢。

4

6 回答 6

4

呃,甲骨文。:) 通常我不会将 System DSN 与 Crystal 一起使用,但对于 Oracle,这是我能够连接它的唯一方法。我记得,您需要确保在“32 位 ODBC 数据源管理器”中的服务器上设置了 Oracle 的 DSN。这是我能够成功让 Oracle 通过 Crystal 连接的唯一方法。

通过 .Net(C# 或 VB),这是另一回事。在这种情况下,我认为您的 App Pool 身份并不重要,因为您可能会使用 Oracle 用户名/密码进行连接。

我回答的 90% 的问题都与 Crystal Reports 和更改连接信息有关。在这篇博文中,我在包装器中使用了一些代码:

http://www.blakepell.com/2012-05-22-crystal-reports-extension-methods

用户名是 oracle 用户名,密码是 oracle 密码,但是服务器名称是 DSN 的名称。不要问我为什么,但这总是对我有用。:p

于 2012-05-22T16:35:56.383 回答
2

我们有类似的问题/错误消息:CR 在包括生产服务器在内的大多数 PC 上运行良好,但在一个特定的开发人员上运行良好。电脑它没有。我们检查了数据库源驱动程序,并且“SQL Server 客户端”和“SQL Server Native Client”存在时缺少“SQL Native Client”。我们从这里http://www.microsoft.com/en-us/download/details.aspx?id=11988(对于 64 位操作系统)安装了 2005 版,它开始工作。

于 2013-04-08T14:31:42.600 回答
1

谢谢大家的时间。

我以前使用过用户 DSN,并且在部署应用程序时出现“无法打开连接。无法打开连接'报告名称'.rpt”。后来我把它改成了SystemDSN。以前的错误消失了,但这次出现“数据库登录失败”错误。

最后,我通过将连接形式 System DSN 更改为 Oracle Server 解决了我的问题。现在一切都很好。如果您有同样的问题,请考虑这一点。

于 2012-05-26T06:13:10.283 回答
1

我在这个 Crystal 问题上度过了一段糟糕的时光,该报告在本地和另一台服务器上工作,但无法在我们的生产环境中工作。

问题是 SQL Native 客户端未安装在 Prod 服务器上。我们修改了报告以使用 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,应用程序池更改,安装疯狂版本的 Crystal 13,就是这样。

于 2015-03-19T18:10:41.520 回答
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);
于 2014-12-09T07:56:59.343 回答
0

如果您在主报告中使用子报告。然后从主报告中删除数据集。并且仅使用子报告的数据集。现在您的报告将显示在服务器上

于 2021-09-27T23:41:38.343 回答