与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条回答
callcenter油条
2020-09-27 03:25

Hi Don,

感谢您的回复。

我们现在正在使用SP20。 由于KB2999226的要求,我将推迟使用SP21。 在我看来,这不是安装在我们的生产服务器上,并且IT经理本周正在休假。 他回来后,我将迁移到SP21。

看起来TestConnectivity是表对象的方法。 听起来好像我可以设置连接属性并使用TestConnectivity查看是否可以建立连接,请根据需要重试,否则会出现问题。 如果问题是断断续续的,则可以解决此问题。

我会给它做个测试。

能否给我更多有关连接池如何影响问题的信息?

当您说"没有更多可用连接"时,这是从Crystal角度,ODBC驱动程序,SQL Server?

此外,开具有偿支持票的流程是什么,因此我们可以获得有关该问题的更多直接帮助。

谢谢

Rick

一周热门 更多>