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

2020-09-27 02:48发布

         点击此处--->   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 

         点击此处--->   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徐
1楼 · 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

callcenter油条
2楼-- · 2020-09-27 03:25

Hi Don,

感谢您的回复。

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

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

我会给它做个测试。

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

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

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

谢谢

Rick

N-Moskvin
3楼-- · 2020-09-27 03:27

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

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

转到此处:

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

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

一周热门 更多>