Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Aplica-se a:SQL Server
Por padrão, o backup usando compactação aumenta significativamente o uso da CPU, e a CPU adicional consumida pelo processo de compactação pode afetar negativamente as operações simultâneas. Portanto, convém criar um backup de baixa prioridade compactado em uma sessão cujo uso da CPU é limitado pelo Administrador de Recursos quando ocorre a contenção da CPU. Este tópico apresenta um cenário que classifica as sessões de um usuário específico do SQL Server mapeando-as para um grupo de carga de trabalho do Administrador de Recursos que limita o uso da CPU nesses casos.
Importante
Em um determinado cenário do Administrador de Recursos, a classificação da sessão pode ser baseada em um nome de usuário, um nome de aplicativo ou qualquer outra coisa que possa diferenciar uma conexão. Para obter mais informações, consulte a Função de Classificação do Administrador de Recursos e o Grupo de Carga de Trabalho do Administrador de Recursos .
Este tópico contém o seguinte conjunto de cenários, que são apresentados em sequência:
Configurando o Administrador de Recursos para Limitar o Uso da CPU
Verificação da Classificação da Sessão Corrente (Transact-SQL)
Configurando um login e um usuário para operações Low-Priority
O cenário neste tópico requer um logon e um usuário do SQL Server de baixa prioridade. O nome de usuário será usado para classificar sessões em execução no login e roteá-las para um grupo de carga de trabalho do Administrador de Recursos que limita o uso da CPU.
O procedimento a seguir descreve as etapas para configurar um login e um usuário para essa finalidade, seguido por um Transact-SQL exemplo, "Exemplo A: Configurando um login e um usuário (Transact-SQL)."
Para configurar um usuário de login e banco de dados para classificar sessões
Crie um logon do SQL Server para criar backups compactados de baixa prioridade.
Para criar um login
Opcionalmente, conceda VIEW SERVER STATE a este login.
Para mais informações, consulte as Permissões Principais da Base de Dados GRANT (Transact-SQL).
Crie um usuário do SQL Server para este logon.
Para criar um usuário
Para habilitar sessões deste login e permitir que o usuário faça backup de um determinado banco de dados, adicione o usuário à função db_backupoperator desse banco de dados. Faça isso para cada banco de dados do qual esse usuário fará backup. Opcionalmente, adicione o usuário a outras funções de banco de dados fixas.
Para adicionar um usuário a uma função de banco de dados fixa
Para mais informações, consulte GRANT Database Principal Permissions (Transact-SQL).
Exemplo A: Configurando um login e um usuário (Transact-SQL)
O exemplo a seguir é relevante somente se você optar por criar um novo logon e usuário do SQL Server para backups de baixa prioridade. Como alternativa, você pode usar um login e usuário existentes, se houver um apropriado.
Importante
O exemplo a seguir usa um exemplo de login e nome de usuário, domain_name\MAX_CPU
. Substitua-os pelos nomes do logon e do usuário do SQL Server que você planeja usar ao criar seus backups compactados de baixa prioridade.
Este exemplo cria um logon para a conta domain_name\MAX_CPU
Windows e, em seguida, concede a permissão VIEW SERVER STATE para o logon. Essa permissão permite que você verifique a classificação do Administrador de Recursos das sessões do login. O exemplo cria um usuário para domain_name\MAX_CPU
e o adiciona à função de banco de dados fixa db_backupoperator para o banco de dados de exemplo AdventureWorks2022. Esse nome de usuário será usado pela função de classificador do Administrador de Recursos.
-- Create a SQL Server login for low-priority operations
USE master;
CREATE LOGIN [domain_name\MAX_CPU] FROM WINDOWS;
GRANT VIEW SERVER STATE TO [domain_name\MAX_CPU];
GO
-- Create a SQL Server user in AdventureWorks2022 for this login
USE AdventureWorks2022;
CREATE USER [domain_name\MAX_CPU] FOR LOGIN [domain_name\MAX_CPU];
EXEC sp_addrolemember 'db_backupoperator', 'domain_name\MAX_CPU';
GO
Configurando o Administrador de Recursos para Limitar o Uso da CPU
Observação
Verifique se o Administrador de Recursos está habilitado. Para obter mais informações, consulte Ativar o Administrador de Recursos.
Neste cenário do Administrador de Recursos, a configuração compreende as seguintes etapas básicas:
Crie e configure um pool de recursos do Administrador de Recursos que limite a largura de banda média máxima da CPU que será dada às solicitações no pool de recursos quando ocorrer a contenção da CPU.
Crie e configure um grupo de carga de trabalho do Administrador de Recursos que use esse pool.
Crie uma função de classificador de , que é uma função definida pelo usuário (UDF) cujos valores de retorno são usados pelo Administrador de Recursos para classificar sessões para que elas sejam roteadas para o grupo de carga de trabalho apropriado.
Registre a função de classificador com o Administrador de Recursos.
Aplique as alterações à configuração na memória do Administrador de Recursos.
Observação
Para obter informações sobre pools de recursos, grupos de carga de trabalho e classificação do Administrador de Recursos, consulte Administrador de Recursos.
As instruções Transact-SQL para essas etapas são descritas no procedimento "Para configurar o Administrador de Recursos para limitar o uso da CPU", que é seguido por um Transact-SQL exemplo do procedimento.
Para configurar o Administrador de Recursos (SQL Server Management Studio)
Para configurar o Administrador de Recursos para limitar o uso da CPU (Transact-SQL)
Emita uma instrução CREATE RESOURCE POOL para criar um pool de recursos. O exemplo para este procedimento usa a seguinte sintaxe:
CREATE RESOURCE POOL [<pool_name>] WITH ( MAX_CPU_PERCENT = /*replace 10 with the actual value*/10 );
Value é um número inteiro de 1 a 100 que indica a porcentagem da largura de banda média máxima da CPU. O valor apropriado depende do seu ambiente. Para fins de ilustração, o exemplo neste tópico usa 20% por cento (MAX_CPU_PERCENT = 20).
Emita uma instrução CREATE WORKLOAD GROUP para criar um grupo de carga de trabalho para operações de baixa prioridade cujo uso da CPU você deseja controlar. O exemplo para este procedimento usa a seguinte sintaxe:
CREATE WORKLOAD GROUP [<group_name>] USING [<pool_name>];
Emita uma instrução CREATE FUNCTION para criar uma função de classificador que mapeie o grupo de carga de trabalho criado na etapa anterior para o utilizador do login de baixa prioridade. O exemplo para este procedimento usa a seguinte sintaxe:
CREATE FUNCTION [<schema_name>].[<function_name>]() RETURNS sysname WITH SCHEMABINDING AS BEGIN DECLARE @workload_group_name AS [<sysname>] IF (SUSER_NAME() = '<user_of_low_priority_login>') SET @workload_group_name = '<workload_group_name>' RETURN @workload_group_name END;
Para obter informações sobre os componentes desta declaração
CREATE FUNCTION
, consulte:-
Importante
SUSER_NAME é apenas uma das várias funções do sistema que podem ser usadas em uma função de classificador. Para obter mais informações, consulte Criar e Testar um Classificador User-Defined Função.
Emita uma instrução ALTER RESOURCE GOVERNOR para registar a função de classificador no Administrador de Recursos. O exemplo para este procedimento usa a seguinte sintaxe:
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION = [<schema_name>].[<function_name>]);
Emita uma segunda instrução ALTER RESOURCE GOVERNOR para aplicar as alterações à configuração na memória do Administrador de Recursos, da seguinte maneira:
ALTER RESOURCE GOVERNOR RECONFIGURE;
Exemplo B: Configurando o Administrador de Recursos (Transact-SQL)
O exemplo a seguir executa as seguintes etapas em uma única transação:
Cria o pool de recursos
pMAX_CPU_PERCENT_20
.Cria o grupo de carga de trabalho
gMAX_CPU_PERCENT_20
.Cria a função de classificador
rgclassifier_MAX_CPU()
, que usa o nome de usuário criado no exemplo anterior.Registra a função classificadora com o Administrador de Recursos.
Depois de confirmar a transação, o exemplo aplica as alterações de configuração solicitadas nas instruções ALTER WORKLOAD GROUP ou ALTER RESOURCE POOL.
Importante
O exemplo a seguir usa o nome de usuário do SQL Server de exemplo criado em "Exemplo A: Configurando um logon e usuário (Transact-SQL)," domain_name\MAX_CPU
. Substitua isso pelo nome do usuário do login que você planeja usar para criar backups compactados de baixa prioridade.
-- Configure Resource Governor.
USE master;
-- Create a resource pool that sets the MAX_CPU_PERCENT to 20%.
CREATE RESOURCE POOL pMAX_CPU_PERCENT_20
WITH
(MAX_CPU_PERCENT = 20);
GO
-- Create a workload group to use this pool.
CREATE WORKLOAD GROUP gMAX_CPU_PERCENT_20
USING pMAX_CPU_PERCENT_20;
GO
-- Create a classification function.
-- Note that any request that does not get classified goes into
-- the 'Default' group.
CREATE FUNCTION dbo.rgclassifier_MAX_CPU() RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
DECLARE @workload_group_name AS sysname
IF (SUSER_NAME() = 'domain_name\MAX_CPU')
SET @workload_group_name = 'gMAX_CPU_PERCENT_20'
RETURN @workload_group_name
END;
GO
-- Register the classifier function with Resource Governor.
ALTER RESOURCE GOVERNOR WITH (CLASSIFIER_FUNCTION= dbo.rgclassifier_MAX_CPU);
COMMIT TRAN;
GO
-- Start Resource Governor
ALTER RESOURCE GOVERNOR RECONFIGURE;
GO
Verificando a classificação da sessão atual (Transact-SQL)
Opcionalmente, faça login como o usuário especificado na função de classificador e verifique a classificação da sessão emitindo a seguinte instrução SELECT no Pesquisador de Objetos:
USE master;
SELECT sess.session_id, sess.login_name, sess.group_id, grps.name
FROM sys.dm_exec_sessions AS sess
JOIN sys.dm_resource_governor_workload_groups AS grps
ON sess.group_id = grps.group_id
WHERE session_id > 50;
GO
No painel de resultados, a coluna deve listar uma ou mais sessões para o nome do grupo de trabalho especificado na função de classificador.
Observação
Para obter informações sobre as exibições de gerenciamento dinâmico chamadas por esta instrução SELECT, consulte sys.dm_exec_sessions (Transact-SQL) e sys.dm_resource_governor_workload_groups (Transact-SQL).
Compactando backups usando uma sessão com CPU limitada
Para criar um backup compactado numa sessão com uma CPU máxima limitada, faça login como o utilizador especificado na função de classificação. No seu comando de backup, especifique WITH COMPRESSION ( Transact-SQL) ou selecione Compactar backup ( SQL Server Management Studio). Para criar um backup de banco de dados compactado, consulte Criar um backup completo de banco de dados (SQL Server).
Exemplo C: Criando um backup compactado (Transact-SQL)
O exemplo de BACKUP de a seguir cria um backup completo compactado do banco de dados AdventureWorks2022 em um arquivo de backup recém-formatado, Z:\SQLServerBackups\AdvWorksData.bak
.
--Run backup statement in the gBackup session.
BACKUP DATABASE AdventureWorks2022 TO DISK='Z:\SQLServerBackups\AdvWorksData.bak'
WITH
FORMAT,
MEDIADESCRIPTION='AdventureWorks2022 Compressed Data Backups',
DESCRIPTION='First database backup on AdventureWorks2022 Compressed Data Backups media set',
COMPRESSION;
GO
Ver também
Criar e testar um classificador User-Defined função
Administrador de Recursos