1

背景

我正在创建一个应用程序(称为 MyApp),该应用程序必须从 Navision 处理的 SQL Server 数据库中读取数据。Navision 用户应该能够使用我的应用程序,而无需修改数据库中的权限。

Navision 对权限的处理似乎在应用层。它执行权限检查而不将它们存储在数据库中。

问题

Navision 在与数据库同步时会覆盖数据库中的用户、权限和其他相关对象,因此创建数据库用户并仅使用该用户的常规方法将行不通。

可能的解决方案

我认为最合适的解决方案是MyApp在 Active-Directory 中创建一个角色,该角色授予数据库必要的权限,并将该角色添加到所有用户。

我不知道如何做到这一点,或者即使它是可能的。欢迎其他解决方案或建议,但请仅建议可以从 ActiveDirectory 或 Navision 中管理的解决方案。

服务器是运行 Navison 5 的 SQL Server 2008 服务器,客户端是 Navision 6。我正在使用 Active Directory for Windows Server 2K8。

编辑:

我的应用程序是一个板条箱创建和设计应用程序。它需要读出客户的姓名和 ID,以及 items 表中的一些项目,这就是我需要这个功能的原因

4

2 回答 2

2

如果您在 NAV 中使用增强的安全模型,用户权限将同步到 SQL Server。但是,这些 SQL 权限映射到 SQL Server 中的应用角色,而不是用户的登录名。如果您使用标准安全模型,所有用户都映射到单个 SQL 应用角色,该角色是超级用户(安全性较低)。

如果您想使用 NAV 安全模型(即通过 NAV 创建的 SQL 应用角色)访问 SQL Server 中的数据,您应该使用 CFront API(通过 SDK 选项安装)。如果您使用的是 NAV 2009,网络服务也是一种选择。

如果要直接访问 SQL Server,则必须使用 SQL Server 自己管理权限。如果您创建一个 SQL 脚本来授予权限,则很容易恢复 NAV 在同步登录期间可能删除的任何内容。

您不能完全按照您的描述从 Active Directory 授予 SQL 权限。相反,您必须将 Active Directory 组映射到 SQL Server 登录或 NAV Windows 登录(取决于您决定直接访问 SQL 还是通过受支持的 NAV API)。注意:与角色相关的权限分别在 SQL 或 NAV 中管理;不是在公元。

从管理的角度来看,您可以简单地在此 Active Directory 组中添加和删除用户。如果您使用 NAV 增强安全模型,AD 组中的每个用户还必须在 Windows 登录中拥有一个条目,并且无论何时进行更改,您都必须同步登录。这种轻微的不便是本机数据库的遗留问题。

于 2010-02-14T15:11:25.937 回答
1

一般来说,完全不建议跳过 NAV 层并直接读取/写入数据库,因为您绕过了存储在表中的所有 NAV 业务逻辑并在 NAV 中报告对象。

您的应用程序打算做什么(如果您无法具体说明,请大写)并且使用 NAV 加载项或数据端口是否可行?

于 2010-01-25T17:09:29.987 回答