sql - 如何基于数据库角色构建资源调控器分类器功能?

标签 sql sql-server

我正在尝试为 SQL 2008 资源管理器编写分类器函数。我想使用用户创建的数据库角色来确定用户是否应该进入特定的工作负载组。有问题的登录名是 SQL 登录名。我不能使用 IS_MEMBER(),因为 IS_MEMBER 将自身限制为当前数据库上下文(在本例中为 master)。我不能使用 [user database].sys.database_principals 因为分类器函数必须是模式绑定(bind)的(因此将查找限制为当前数据库上下文)。此外,该函数引用的任何 View 也必须是模式绑定(bind)的,这意味着我无法在 master 中创建 View 来引用用户数据库的安全 View 。

这里的目标是能够基本上从 master 执行 IS_MEMBER() 以检查另一个数据库中的角色。

最佳答案

您可以在数据库中创建一个 DDL 触发器,以更新 master 中的表,以便您在其中也拥有所有用户/组信息。然后,您可以对此进行查询。您可能至少希望将触发器附加到 ADD_ROLE_MEMBER 和 DROP_ROLE_MEMBER。

我刚刚开始与资源管理器合作,所以如果我遇到了一种“更清洁”的方式,我会再次在这里发帖。

关于sql - 如何基于数据库角色构建资源调控器分类器功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3842930/

相关文章:

php - 如何显示mysql联合查询的结果

sql-server - 仅使用正确的参数顺序在 Access VBA 中调用存储过程,为什么?

sql - 关于选择数据类型

sql - 查询以从组中查找第一个和第二个最大值

sql - 如何去除列中的冗余值?

sql - 根据另一个数据库的查询结果查询一个数据库

sql - 逗号分隔字段上的表值函数 (TVF)

sql - 练习 SQL 查询

java - sql查询数据分组

python - 复杂的注释和聚合查询