Ham*_*thi 5 sql-server memory sql-server-2014
我使用的是 SQL Server 2014。有一些用户可以查询表。问题是,大多数时候这些查询使用大量内存。我想知道是否有任何方法可以限制每个用户的资源?
没有特定的查询。我只想控制用户。有时他们会做一些疯狂的事情。
如前所述,您可以使用资源管理器来限制特定用户的内存使用量。
简要总结一下您应该执行的步骤:
创建资源池。此示例最多占用 30% 的内存,请小心。
CREATE RESOURCE POOL UserMemoryPool
WITH
( MIN_MEMORY_PERCENT=0,
MAX_MEMORY_PERCENT=30)
GO
Run Code Online (Sandbox Code Playgroud)创建将使用资源池的工作负载组。
CREATE WORKLOAD GROUP UserMemoryGroup
USING UserMemoryPool;
GO
Run Code Online (Sandbox Code Playgroud)您应该定义一个分类器函数来告诉 SQL Server 谁将属于该组。
CREATE FUNCTION dbo.UserClassifier()
RETURNS SYSNAME WITH SCHEMABINDING
AS
BEGIN
DECLARE @Workload AS SYSNAME
IF(SUSER_NAME() = 'UserNameToLimit')/*Specify the user*/
SET @Workload = 'UserMemoryGroup'
ELSE
SET @Workload = 'default'
RETURN @Workload
END
GO
Run Code Online (Sandbox Code Playgroud)最后启用资源调控器
USE master
GO
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = dbo.UserClassifier);
GO
ALTER RESOURCE GOVERNOR RECONFIGURE;
Run Code Online (Sandbox Code Playgroud)您可以在 MSDN 的资源调控器中找到更多信息