与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条回答
SKY徐
2020-09-27 03:21 .采纳回答

嗨,里克,

第一个问题,您使用的VS CR的确切版本是什么? 13.0.2000.0是程序集版本,除非您升级到现在使用3500个程序集的SP 21,否则它不会更改。

程序和功能会告诉您所使用的版本。

SP 21在这里:

https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads

还请阅读信息,新的更新需要"修复"您的项目。

如果由于某种原因连接信息失败,则可能导致错误,可能是连接池,没有更多可用的连接等。请尝试添加RPT.TestConnectivity(),如果失败,则进行修复,报告并记录。 ...

Don

一周热门 更多>