在 SQL Server 2008 R2 中为特定数据库用户设置最大查询数
Posted
技术标签:
【中文标题】在 SQL Server 2008 R2 中为特定数据库用户设置最大查询数【英文标题】:Set Max number of Queries to specific database user in SQL Server 2008 R2 【发布时间】:2013-05-26 20:19:21 【问题描述】:有没有一种方法可以限制数据库用户一次连接到数据库并且只能进行一次查询? -在 SQL Server 2008 R2 中 -
示例 1:
数据库:database_1 用户名:some_user 密码:some_pass第一次连接到 database_1:
连接:xxx.xxx.xxx.xx1 ...连接到 xxx.xxx.xxx.xx1第二次连接到 database_1:
连接:xxx.xxx.xxx.xx2 ...连接失败:xxx.xxx.xxx.xx2用户some_user
试图执行一些查询:
查询一:
select *
from table1
join ,...,join tableN
示例 2:
数据库:database_1 用户名:some_user 密码:some_pass第一次连接到 database_1:
连接:xxx.xxx.xxx.xx1 ...连接到 xxx.xxx.xxx.xx1第二次连接到 database_1:
连接:xxx.xxx.xxx.xx2 ...连接到 xxx.xxx.xxx.xx2用户some_user
尝试使用连接执行一些查询:xxx.xxx.xxx.xx1
查询1:
select * from table1 join ,...,join tableN
结果:已执行...返回 N 条记录
用户现在尝试使用连接执行另一个查询:xxx.xxx.xxx.xx2
查询2:
select * from table1 join , ... , join tableN
结果:未执行...一次不能执行多个查询。
【问题讨论】:
【参考方案1】:您可以使用logon triggers 创建任何您喜欢的访问策略:
您可以使用登录触发器来审核和控制服务器会话,例如通过跟踪登录活动、限制登录到 SQL Server 或限制特定登录的会话数。
有关示例,请参见链接。如果您一次将用户限制为一个连接,那么您实际上一次将用户限制为一个查询,因为出于所有实际目的,一个连接只能运行一个查询(没有进入 MARS 详细信息)。
您需要了解的一个相关概念是Resource Governor,它允许您通过将用户会话分配给特定工作负载并限制工作负载资源分配来限制用户可以使用的资源。同样,请参阅链接以获取详细信息和示例。
【讨论】:
以上是关于在 SQL Server 2008 R2 中为特定数据库用户设置最大查询数的主要内容,如果未能解决你的问题,请参考以下文章
如何在 sql server 2008R2/ssis 中为每个日期导出带有日期时间的单独 excel 表?
SQL Server 2008 R2 在特定条件下选择特定行
根据 SQL Server 2008 R2 中特定列中的模式更改对行进行分组