是否可以对某个数据库或最好是某个用户或一组用户可以使用的CPU数量设置上限?
由于在运行时创建的复杂查询,我在服务器上有一个最大化CPU的应用程序。在重新开发该应用程序中的特定模块(可能需要数月)之前,我需要找到一种方法来阻止该特定应用程序阻塞SQL Server并降低同一服务器上其他应用程序的可用性。
答案 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