11

我已经使用 Crystal Reports XIr2 创建了一个报表,用于为我们的应用程序报告来自数据库的信息。它是一个交叉表报告,报告运行存储过程返回的各种数据。

快速了解运行此报告的应用程序 - 它是一个用 VB6 编写的应用程序,在加载应用程序时会提示您输入用户名和密码,它们在 SQL 服务器上配置为 SQL 登录名,因此当您登录时您正在针对 SQL Server 安全性进行身份验证的应用程序。

该报表在 Crystal Reports 中工作得非常好,但是当它从客户站点上的应用程序中启动时,我遇到了一些奇怪的行为。它适用于所有具有“sa”级别数据库访问权限的用户,但在以任何其他用户身份运行时会出现以下错误;

错误信息

如果我以在应用程序中收到上述错误的用户身份直接连接到数据库服务器,则手动运行存储过程不会出现任何错误。

如果我给在 SQL 服务器上的应用程序“sa”权限内遇到错误的用户,则错误将停止发生。

我已经检查了相关存储过程的所有相关执行权限,但如我所述,如果我手动连接到 SQL Server 并执行该过程,我没有收到上面链接的错误。

如果收到此错误的用户在此报告之前运行另一个报告,它会起作用,但是如果他们在收到此错误后运行报告,则所有报告都会停止工作并需要重新启动应用程序。

请问有什么想法吗?

4

2 回答 2

1

我建议您确保为报告问题的用户将数据库的用户映射的默认架构设置为 dbo。我还建议为此使用数据库角色。

于 2013-01-10T03:54:05.793 回答
0

授予执行权限并不总是到此为止——有时,您必须检查其中对象的可能权限块。当您说您使用用户的登录名手动运行该过程时,是否也可以肯定用户的凭据就是您用来连接数据库的凭据?

也许您可以使用应用程序将使用的更通用的 sql 登录 - 这样您就不必跟踪多个用户的权限(只是一个建议!:))

于 2013-01-29T05:25:01.313 回答