【发布时间】:2014-08-17 05:50:59
【问题描述】:
请任何人建议是否可以在 [dbo] 架构中使用一个存储过程从一个 架构 中的一个 表 中选择数据,供用户通过一个 架构 访问数据库角色,并让它从另一个架构中的同名表中选择数据,供用户通过另一个数据库角色访问强>?
例如,如果我的数据库中有三个模式:
- dbo
- 绿色
- 红色
我有两个数据库登录名 [RedLogin] 和 [GreenLogin]。 它们使用各自的数据库用户 [RedUser] 和 [GreenUser] 连接到我的数据库。这些用户是各自数据库角色 [RedRole] 和 [GreenRole] 的成员。
- [RedUser] 的默认架构为 [red]。
- [GreenUser] 的默认架构为 [green]。
- [RedRole] 对 [dbo] 具有执行权限并在 [red] 架构上选择权限。
- [GreenRole] 对 [dbo] 具有执行权限并在 [green] 架构上选择权限。
- 在 [green] 架构中,我有一个名为 [User] 的表。
- 在 [red] 架构中,我有一个名为 [User] 的表。
-
在 [dbo] 架构中,我有一个名为 [User_GetAll] 的存储过程运行
从用户中选择 *;
我想要的是:
- 对于使用 [Redlogin] 登录并调用 [User_GetAll] 的用户,从 [red] 获取所有用户。[用户]表。
- 对于使用 [Greenlogin] 登录并调用 [User_GetAll] 的用户,从 [green] 获取所有用户。[用户]表。
这甚至可能吗?如果是这样,那么实现它的最佳方法是什么?谢谢。
请注意:上面的场景只是为了了解我想要实现的目标。在实际项目中,需要将解决方案应用于许多表和存储过程。
【问题讨论】:
标签: sql-server stored-procedures schema role-based