将最大查询数设置为SQL Server 2008 R2中的特定数据库用户

crs*_*ezf 4 sql sql-server-2008 sql-server-2008-r2

有没有办法可以限制数据库用户与数据库建立一个连接,并且一次只能查询一个查询? - 在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尝试执行某些查询:

查询1:

select * 
from table1 
join ,...,join tableN
Run Code Online (Sandbox Code Playgroud)

例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尝试使用connection:xxx.xxx.xxx.xx1执行某些查询

查询1:

 select * from table1 join ,...,join tableN
Run Code Online (Sandbox Code Playgroud)

结果:执行...返回N条记录

用户现在尝试使用connection:xxx.xxx.xxx.xx2执行另一个查询

QUERY2:

select * from table1 join , ... , join tableN
Run Code Online (Sandbox Code Playgroud)

结果:未执行...一次不能执行多次查询.

Rem*_*anu 7

您可以使用登录触发器创建您喜欢的任何访问策略:

您可以使用登录触发器来审核和控制服务器会话,例如通过跟踪登录活动,限制登录到SQL Server或限制特定登录的会话数.

请参阅链接以获取示例.如果您一次将用户限制为仅一个连接,那么您实际上已经有效地将用户限制为一次仅一个查询,因为出于所有实际目的,连接只能运行一个查询(没有进入MARS详细信息).

您需要注意的一个相关概念是资源调控器,它允许您通过将用户会话分配给特定工作负载并限制工作负载资源分配来限制用户可以使用的资源.再次,请参阅链接以获取详细信息和示例.