是否有一种方法可以限制数据库用户与数据库建立一个连接,并且一次只能查询一个查询? - 在SQL Server 2008 R2中 -
示例1:
第一次连接到database_1:
与database_1的第二次连接:
用户some_user
尝试执行某些查询:
查询1:
select *
from table1
join ,...,join tableN
示例2:
第一次连接到database_1:
与database_1的第二次连接:
用户some_user
尝试使用connection执行某些查询:xxx.xxx.xxx.xx1
查询1:
select * from table1 join ,...,join tableN
结果:已执行...已返回N条记录
用户现在尝试使用connection:xxx.xxx.xxx.xx2
执行另一个查询查询2:
select * from table1 join , ... , join tableN
结果:未执行...一次不能执行多次查询。
答案 0 :(得分:7)
您可以使用logon triggers创建您喜欢的任何访问政策:
您可以使用登录触发器来审核和控制服务器会话,例如通过跟踪登录活动,限制登录到SQL Server,或限制特定登录的会话数。
请参阅链接以获取示例。如果您一次只将用户限制为一个连接,那么您实际上一次只能将用户限制为一个查询,因为出于所有实际目的,连接只能运行一个查询(不进入{{3} } 细节)。
您需要注意的一个相关概念是MARS,它允许您通过将用户会话分配给特定工作负载并限制工作负载资源分配来限制用户可以使用的资源。再次,请参阅链接以获取详细信息和示例。