点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我有一组Crystal Reports已经使用了很长时间。 最近,一小部分更新的报告现在在报告开始时提示我的一个用户提供数据库连接信息:
报表中有一个默认连接,但只有服务器被拿起,而目录没有被拿起。
此行为仅在一台计算机上发生,我的其他用户都没有遇到问题。 设置数据库连接的函数是从Don的示例之一复制而来的。 我们最近将所有用户都升级到了V22,但是只有一个用户遇到了这个奇怪的问题,并且只有2个报告-不幸的是,他们最常使用的报告。
我有一个标准报表,其中嵌入了Crystal Report Viewer。 此表单对所有报告使用相同的代码:1-设置参数,2-设置报告和所有子报告的数据库连接。
有人对如何调试它有任何建议吗? 我无法看到该计算机上的用户连接信息(在域中)与任何其他计算机之间的任何差异。 不用说,它在开发中效果很好,并且不可复制。
环境是Visual Studio 2010,Visual Basic,SQL Server 2005。
谢谢,尼尔
sap-prompt.jpg (24.5 kB)
嗨,尼尔,
出现提示并没有显示登录信息的原因是因为CR运行时找不到数据库客户端。
将这3个参数添加到 系统环境变量,并创建日志记录文件夹:
LOGGING_DIR = c:\ logging
LOGGING_ENABLED_ASSERT = 1
LOGGING_ENABLED_RUNTIME = 100
运行应用程序,直到发生错误 停下来 查看日志,您应该看到什么以及可能为什么找不到数据库客户端。
检查您的PATH语句,SQL Server应该在其中添加客户端的路径,可能是 可能不存在,或者如果安装了其他客户端,则顺序可能不正确。 您可以将正常工作的PC上的PATH与无法正常工作的PC上的PATH进行比较。
Don
如果您仍然遇到此问题,我找到了一个对我有用的解决方案 。 我遇到了与您描述的完全相同的问题。 我最终发现的是,差异和差异制造商是在安装的SQL驱动程序中。 对于那些有效的工具,已安装SQL Native Client 2012(11.0)。 对于那些无效的驱动程序,缺少此版本的驱动程序(已安装SQL Native Client 2008(10.0))。
希望这对您或其他找到此帖子的人有帮助。
最有可能的是,用户没有这两个报告所需的某些表的权限。
如果不是这种情况:
连接方法?
驱动程序在计算机之间是否相同?
如果使用ODBC,是否在计算机之间设置相同?
NT身份验证或SQL Server身份验证?
报表之间的连接属性相同(在Crystal,数据库,设置数据源中) 位置...展开属性。
我们只是重试了让用户登录到另一台计算机上的实验,一个报告可以工作,但是没有返回任何值,第二个报告则提示她类似于上面的屏幕。 在原始用户计算机上,两个报告都提示输入数据库连接信息。
连接方法是通过ODBC到SQL Server。 所有机器都修补到相同的级别。 所有身份验证均通过域帐户进行。 与服务器的数据连接为:
请注意,由于我在不在域中的开发系统上,因此集成安全性为假。 所有其他用户都使用Integrated Security登录。
子报表连接:
关于驱动程序的要点,但是所有其他90多个报告似乎都可以在这台机器上正常工作。 在两台计算机上,只有使用版本22创建的2个最新报告似乎有问题。 每个人都在运行Windows10。由于.Net提供了基本的SQL数据客户端,因此SQL驱动程序只是一个问题。 这两个系统都已修补到.Net 4.7.1。
两个报告均基于单个视图,该视图以行的形式提供所有数据,然后可从单个存储过程对其进行访问。 所有有问题的用户都具有有权执行该存储过程的角色。
两个系统都安装了相同的Crystal Reports 22。
所有报告均通过相同的报告查看器表单进行查看,该表单将新的数据库连接应用于报告和子报告。 根据您上面的建议,我返回并检查了上面的每个数据库表和视图,以确保已授予SharesAdministration角色访问权限。 共享管理角色还具有对存储过程的执行访问权限。 对于大多数用户而言,默认数据库是ArmadaProduction,因此该用户正尝试显示一个报表,该报表默认为其默认数据库,并且已经具有Integrated Security访问权限。
令人困惑的是,为什么当每个用户的补丁程序级别都相同,安装了相同的Crystal Reports并使用相同的安全性和数据库角色时,它在某些用户系统上却无法在其他用户系统上正常工作。 同样,奇怪的是,它显示一个没有数据库的登录提示。 报表好像在加载期间丢失了数据库连接信息。
如果有某种详细的日志文件可以在发生这种情况时打开,这将是很好的。
Neil
嗨,
再次检查MSSQL中的用户授权。
感谢您的答复。 如前所述,奇怪的是,此应用程序中的所有其他报告仅能在两个工作站上工作,而两个除外,它们只能在安装了该应用程序的所有其他系统上工作。 大约还有40个带有子报表的其他报表,它们使用相同的机制来设置报表和子报表连接。 Billy,我将其中一台工作站升级到了SQL Native Client 2012(11.0),但这没有任何改变。
唐,我将尝试您的日志记录建议。 也许,这将有助于解决此问题。 我会让你知道我的发现。
谢谢,尼尔(Neil)
唐,关于故障排除的建议表明了问题所在。 日志文件显示它正在寻找SQL Client11。经过几代程序员,到服务器的报表连接已设置为ODBC,SQLCient 10和SQLClient11。我无法在该服务器上安装SQL Client 11。 目标机器(断然说Windows 10不是正确的操作系统?!?-尝试了32位和64位版本)。 但是,回头查看100多个报告会发现驱动程序存在差异。 将所有报表和子报表设置为相同的SQL ODBC连接可解决此问题。 这也将使将来的安装更加容易,因为我们不必为SQL驱动程序打包单独的安装程序。 谢谢,非常感谢。
一周热门 更多>