SQL Server 2008资源管理 - 按用户/组/数据库?

时间:2010-11-10 12:07:12

标签: sql-server sql-server-2008

是否可以对某个数据库或最好是某个用户或一组用户可以使用的CPU数量设置上限?

由于在运行时创建的复杂查询,我在服务器上有一个最大化CPU的应用程序。在重新开发该应用程序中的特定模块(可能需要数月)之前,我需要找到一种方法来阻止该特定应用程序阻塞SQL Server并降低同一服务器上其他应用程序的可用性。

1 个答案:

答案 0 :(得分:1)

你看资源总督吗?它可以在用户组之间分配资源。

这只是示例,您需要查看文档的完整信息:

  • 创建池:

    create resource pool Pool1
     with (
       min_cpu_percent = 30
      , max_cpu_percent = 100
    )
    
    
    create resource pool Pool2
     with (
      min_cpu_percent = 50
     , max_cpu_percent = 70
    )
    
    
    create resource pool Pool3
     with (
     min_cpu_percent = 5
     , max_cpu_percent = 100  
    )
    
  • 创建工作负载组并将其链接到池:

    create workload group Group1
    using Pool1
    
    
    create workload group Group2
    using Pool2
    
    
    create workload group Group3
    using Pool3
    
  • 创建将决定哪个工作负荷组将用于当前会话的功能:

    create function dbo.rg_class_simple() returns sysname
       with schemabinding 
     as begin
      declare
       @grp_name as sysname
    
    
      if (suser_name() = 'user1')
         set @grp_name = 'Group1'
    
    
      else if (suser_name() = 'user2')
         set @grp_name = 'Group2'
    
    
      else if (suser_name() = 'user3')      
         set @grp_name = 'Group3'
    
    
    
     return @grp_name
    
    end