Partilhar via


Função de classificador do administrador de recursos

Aplica-se a:SQL ServerAzure SQL Managed Instance

O processo de classificação do administrador de recursos pode usar uma função de classificador para atribuir sessões de entrada a um grupo de carga de trabalho. A função de classificador contém sua lógica personalizada para classificar sessões em grupos de carga de trabalho.

Para obter exemplos de configuração e monitoramento e aprender as práticas recomendadas do administrador de recursos, consulte Tutorial: Exemplos de configuração do administrador de recursos e práticas recomendadas.

Classificação

Com o administrador de recursos, cada nova sessão é classificada em um grupo de carga de trabalho. O classificador é uma função escalar definida pelo usuário que você cria. Contém a lógica desejada para atribuir as sessões de entrada a um grupo de trabalho. O valor escalar retornado pelo classificador é o nome de um grupo de carga de trabalho a ser atribuído a uma sessão de entrada.

Se o administrador de recursos estiver habilitado e uma função de classificador for especificada na configuração do administrador de recursos, a saída da função determinará o grupo de carga de trabalho usado para novas sessões. Caso contrário, todas as sessões de usuário serão classificadas no grupo de carga de trabalho default.

Observação

O grupo de carga de trabalho internal é usado apenas para solicitações internas do sistema. Não é possível alterar os critérios usados para atribuir solicitações ao grupo de carga de trabalho internal e não é possível classificar explicitamente as solicitações no grupo de carga de trabalho internal.

Você deve concluir as seguintes etapas para começar a usar uma função de classificador:

  1. Crie a função no banco de dados master usando CREATE FUNCTION. A função deve usar a vinculação de esquema.
  2. Faça referência à função na configuração do administrador de recursos usando ALTER RESOURCE GOVERNOR com o parâmetro CLASSIFIER_FUNCTION.
  3. Torne a nova configuração eficaz usando ALTER RESOURCE GOVERNOR RECONFIGURE.

Importante

As tentativas de conexão do cliente podem expirar se a função do classificador não for concluída dentro do período de tempo limite de conexão configurado pelo cliente. É importante que você crie funções de classificador que terminem a execução antes que o tempo limite da conexão possa ocorrer.

Mantenha a função do classificador simples. Evite usar lógica complexa ou demorada. Se possível, evite o acesso aos dados no classificador.

A função classificadora tem as seguintes características e comportamentos:

  • A função é definida no escopo do servidor (no banco de dados master).
  • A função é definida com associação de esquema. Para obter mais informações, consulte SCHEMABINDING.
  • A função é avaliada para cada nova sessão, mesmo quando o pool de conexões está habilitado.
  • A função retorna o contexto do grupo de carga de trabalho para a sessão. A sessão é atribuída ao grupo de trabalho definido pelo classificador durante a duração da sessão.
  • Se a função retornar NULL, defaultou o nome de um grupo de carga de trabalho inexistente, a sessão receberá o contexto default grupo de carga de trabalho. A sessão também recebe o contexto default se a função falhar por qualquer motivo.
  • Depois que uma função de classificador é adicionada ou removida usando ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) instrução, a alteração entra em vigor somente depois que ALTER RESOURCE GOVERNOR RECONFIGURE instrução é executada.
  • Apenas uma função pode ser designada como classificador de cada vez.
  • A função de classificador não pode ser modificada ou eliminada, a menos que o seu status de classificador seja removido usando a instrução ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...) que define o nome da função para NULL ou para o nome de outra função.
  • Na ausência de uma função classificadora, todas as sessões são classificadas no grupo default.
  • Os grupos de carga de trabalho especificados na saída da função de classificador estão fora do escopo da restrição de vinculação de esquema. Por exemplo, você não pode soltar uma tabela referenciada na função de classificador, mas pode soltar um grupo de carga de trabalho mesmo que o classificador retorne o nome desse grupo.

Ativar DAC

Para fins de solução de problemas e diagnóstico, recomendamos habilitar e se familiarizar proativamente com a Conexão de Administrador Dedicado (DAC). O DAC não está sujeito à classificação do administrador de recursos. Você pode usar um DAC para monitorar e solucionar problemas de uma função de classificador, mesmo que a configuração do administrador de recursos funcione mal e torne outras conexões inutilizáveis. Para obter mais informações, consulte Conexão de diagnóstico para administradores de bases de dados.

Se um DAC não estiver disponível para solução de problemas, você poderá iniciar o servidor no modo de usuário único. Embora a conexão de modo de usuário único não esteja sujeita à classificação, ela não oferece a capacidade de diagnosticar a classificação do administrador de recursos enquanto está em execução.

Depois de se conectar usando um DAC ou no modo de utilizador único, pode modificar a configuração do governador de recursos para remover uma função de classificador com defeito ou desativar o governador de recursos.

Processo de login

No contexto do administrador de recursos, o processo de login para uma sessão consiste nas seguintes etapas:

  1. Autenticação de login.
  2. Logon aciona execução. Ocorre somente se existirem gatilhos de logon na instância.
  3. Classificação.

Quando a classificação é iniciada, o administrador de recursos executa a função de classificador e usa o valor escalar retornado pela função para enviar solicitações ao grupo de carga de trabalho correspondente.

Você pode monitorizar a execução de gatilhos de início de sessão e da função de classificação usando as vistas do sistema sys.dm_exec_sessions e sys.dm_exec_requests.

Exemplos

A função de classificador do administrador de recursos pode usar uma grande variedade de lógica personalizada. Para obter mais exemplos e um passo a passo, consulte Tutorial: Exemplos de configuração do administrador de recursos e práticas recomendadas.

Um. Nome do anfitrião

Esta função classifica sessões de um nome de host específico num grupo de carga chamado Reports, usando a função de sistema interna HOST_NAME(). Todas as outras sessões continuam a ser classificadas no grupo de carga de trabalho default.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (HOST_NAME() IN ('reportserver1','reportserver2'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

B. Nome de utilizador

Esta função classifica sessões de nomes de usuário específicos ou nomes de conta de serviço em um grupo de carga de trabalho chamado Reports, usando o SUSER_SNAME() função interna do sistema. Todas as outras sessões continuam a ser classificadas no grupo de carga de trabalho default.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (SUSER_SNAME() IN ('Reporting', 'domain/svc_reporting'))
        SET @grp_name = 'Reports';
    
    RETURN @grp_name;
END;
GO

C. Nome do aplicativo

Esta função classifica sessões de nomes de aplicativos específicos num grupo de carga de trabalho chamado Adhoc, usando a função de sistema interna APP_NAME(). Todas as outras sessões continuam a ser classificadas no grupo de carga de trabalho default.

Importante

Um aplicativo ou usuário pode fornecer qualquer nome de aplicativo como parte da cadeia de conexão. Os usuários podem se conectar através de uma ampla variedade de aplicativos.

CREATE FUNCTION dbo.rg_classifier()
RETURNS sysname
WITH SCHEMABINDING
AS
BEGIN
    DECLARE @grp_name sysname = 'default';

    IF (APP_NAME() IN ('Microsoft SQL Server Management Studio - Query','azdata'))
        SET @grp_name = 'Adhoc';
    
    RETURN @grp_name;
END;
GO