解决方案:从C#应用程序调用Crystal Report时抛出“数据库登录失败”或“加载报告失败”

时间:2018-12-21 17:59:07

标签: c# crystal-reports

所以,本周早些时候,我不得不更新一些使用Crystal Reports的旧代码,每次我尝试更新代码时,都会得到“加载报告失败” “数据库登录失败”

如果遇到了这些,您将非常了解它们只是从Crystal Reports dll中冒出来的“捕获所有”异常。每个单词三个简单的词,从字面上讲就意味着数十种可能的问题中的任何一种……不仅仅是您所看到的。

数据库登录失败:可能是您的登录错误;可能是您的数据源在报告中设置不正确;可能是您的报告中的字体不受支持。您不知道,因为它不会告诉您!

加载报告失败:可能是您的报告路径不正确;可能是您的用户无权访问windows / temp文件夹。可能是该报告已损坏。但是你会知道吗?没有!您将只知道“加载报告失败”。

那如果你得到其中之一怎么办?

1 个答案:

答案 0 :(得分:0)

我建议执行以下两项操作,这将使您能够记录ACTUAL错误,以查看实际情况。下面列出的每个建议的来源相关链接:

1)转到sysinternal的“ Process Monitor”或“ Procmon”。如果您不熟悉Google,请搜索该公司/产品;通常认为它是安全可靠的,但是请在继续操作之前自行确定。有关如何使用此功能的youtube视频,但是如果您经常处理专有dll,此工具将使您的开发寿命提高100000倍。

2)这是大个子。首先,让我们确认这对您有用。在遇到问题的机器上,跳到C驱动器(或您的东西所在的任何驱动器)上,并搜索名为“ crlogger.dll”的dll(如果有):您很幸运!如果没有...,很抱歉:(您可以尝试以下操作,但可能无法正常工作。

Lets add some logging!

转到系统属性->环境变量。将以下3个添加到系统变量:

LOGGING_DIR = c:\ logging

LOGGING_ENABLED_ASSERT = 1

LOGGING_ENABLED_RUNTIME = 30

保存,转到该日志文件夹(如果不存在)(或将其设置为其他目录),然后返回您的应用程序。尽一切努力打破它。现在跳回到日志记录文件夹和tada!您现在有了ACTUAL日志。有了可以调试的实际错误。

就我而言,我遇到了两个错误。

加载报告失败:我已经安装了64位CR运行时,但没有安装它正在寻找的32位。我安装了该错误,此错误被克服。

数据库登录失败:我查看了日志,发现“ Microsoft SQL Server本机客户端11.0说明:客户端不支持加密。”。原来这是两件事,这是procman帮助我确定的:

1)当我拥有客户端11时,我没有足够新的版本。我去了并获得了更新的安装程序,特别是“ Microsoft® SQL Server® 2012 Native Client - QFE”安装程序。 (我们有2016,但没有2016本机客户端)

2)I had to add some registry keys!通过Process Monitor找不到这些密钥失败,可以证明这一点。

无论如何,那应该让您重回正轨。现在,您不必猜测出了什么问题,并且可以真正开始解决问题了。

对于您中的许多人来说,此帖子现在不是必需的。但我想以此为目的,因为有一天,其他贫穷的开发人员将像我一样,在吸引了许多通宵人员之后,最终会在这里结束,他们迫切希望找到解决方案。在找到日志之前,我花了将近30个小时来解决这个问题,然后在不到1个小时的时间内解决了问题,因为我实际上有一些可行的项目要处理。

祝你好运!