与SQL Server的间歇性连接错误; 无法打开连接或错误的登录参数

2020-09-27 02:48发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我的应用程序在运行Cry...

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


你好

我的应用程序在运行Crystal报表时连接到SQL Server数据库时出现间歇性错误。

我已经阅读了很多讨论类似错误的线程,尤其是"错误的登录参数"。 在我看来,线程描述的是引擎无法始终连接到服务器的问题。 我们的问题是,大多数情况下成功建立连接,但是周期性地失败。

该解决方案在Visual Studio 2010中使用Crystal版本13.0.2000.0。

用户通过终端服务连接到许多Windows 2008R2服务器之一,并从服务器运行应用程序。 SQL Server是2012 SP3。

在运行报告时,用户会定期收到错误消息。 "无法打开连接"或"错误的登录参数"。 这并非始终如一。 有时,用户会走几天甚至更多天而不会出错。 其他时候,他们连续多次收到错误。 大多数情况下,他们会重新运行报告,这很好。 至少有10个或更多不同的Crystal报告正在发生这种情况。

SQL Native Client 11安装在所有终端服务器主机上。

大多数报告已使用Crystal Reports Designer 2008保存。但是,我们已经使用最新版本的Designer重新创建了一个报告,并且该报告也发生了错误。

我正在动态设置用户当前正在使用的SQL Server和数据库的表位置/连接信息。 我们有3个SQL Server和大约18个数据库。 我的直觉是,报表引擎使用的是报表中的默认位置,而不是运行时提供的连接信息。 一些报告在其默认位置具有一个SQL Server,该服务器在生产LAN上不存在。 我相信这些会出现"无法打开连接"错误。 其他报告在生产LAN中将服务器和数据库作为默认位置,但将其作为测试用户。 我在运行时将用户/密码设置为生产值。 我认为这些报告在发生错误时会得到"错误的登录参数"。

在任何一种情况下,报告的工作时间都超过90%。 该错误在所有生产数据库以及所有终端服务器主机上均发生。

下面是我用于在运行时设置报告并调用以打印,预览或导出报告的代码。

发生错误时,我确实捕获了.GLF日志文件。 从我所看到的看来,它似乎正在尝试使用适当的凭据。 如果需要,我可以提供这些。

任何帮助将不胜感激。

此致

里克

 int RetVal = 1;
                 cryRpt =新的ReportDocument();
                 cryRpt.Load(ReportName);
                 如果(cryRpt.IsLoaded)
                 {
                     cryRpt.RecordSelectionFormula = SelectionString;
                     cryRpt.PrintOptions.PrinterName = PrinterToUse;
                    //设置表位置
                     CrystalDecisions.Shared.TableLogOnInfo logonInfo =新的CrystalDecisions.Shared.TableLogOnInfo();
                     foreach(cryRpt.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table表)
                     {
                         logonInfo = table.LogOnInfo;
                         logonInfo.ConnectionInfo.ServerName = this.Server;
                         logonInfo.ConnectionInfo.DatabaseName = this.Database;
                         logonInfo.ConnectionInfo.UserID = this.User;
                         logonInfo.ConnectionInfo.Password = this.Password;

                         table.ApplyLogOnInfo(logonInfo);
                     }
                     CrystalDecisions.CrystalReports.Engine.ReportDocument子报表;
                     对于(int i = 0; i             
3条回答
N-Moskvin
2020-09-27 03:27

连接池位于服务器端,CR中没有可用的配置。

此外,我将假设您管理大量报告或大量客户,CR for VS不是设计的,也不是一次能够处理大量报告的。还有其他选项可以管理更大的数量, 询问客户服务以获取更多信息。

转到此处:

https://www.sap.com/products/crystal-reports.html

您会找到指向客户服务团队的链接,以购买单个案例。

一周热门 更多>