我使用Crystal Reports XIr2创建了一个报告,以报告我们应用程序的数据库信息。它是一个交叉表报告,报告从运行存储过程返回的各种数据。
快速了解运行此报告的应用程序 - 它是一个用VB6编写的应用程序,在加载应用程序时,系统会提示您输入用户名和密码,这些用户名和密码在SQL服务器上配置为SQL登录,所以当您登录到您正在针对SQL Server安全性进行身份验证的应用程序。
该报告在Crystal Reports中运行得非常好,但是当我们在客户站点上的应用程序中启动时,我遇到了一些奇怪的行为。它适用于具有“sa”级数据库访问权限的所有用户,但在与其他任何用户一起运行时会出现以下错误;
如果我作为在应用程序中出现上述错误的用户直接连接到数据库服务器,则手动运行存储过程可以正常运行。
如果我在SQL服务器上为我们的应用程序'sa'权限中的用户提供错误,则错误将停止发生。
我已经检查了相关存储过程的所有相关执行权限,但如上所述,如果我手动连接到SQL Server并执行该过程,我就不会收到上面链接的错误。
如果收到此错误的用户在此报告之前运行另一个报告,则它可以正常工作,但是如果他们在收到此错误后运行报告,则所有报告都会停止工作并需要重新启动应用程序。
有什么想法吗?
答案 0 :(得分:1)
我建议您确保为报告问题的用户将数据库的用户映射的默认架构设置为dbo。我还建议使用数据库角色。
答案 1 :(得分:0)
授予执行权限并不总是在那里结束 - 有时,您必须检查其中对象的可能权限块。当您说您使用用户的登录手动运行该过程时,是否还确定用户的凭据是您用来连接数据库的凭据?
也许您可以使用应用程序将使用的更通用的sql登录 - 这样您就不必跟踪多个用户的权限(只是一个建议!:))