Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
Se aplica a:SQL Server
Azure SQL Managed Instance
El proceso de clasificación del regulador de recursos puede usar una función clasificadora para asignar sesiones entrantes a un grupo de cargas de trabajo. La función clasificadora contiene la lógica personalizada para clasificar las sesiones en grupos de cargas de trabajo.
Para obtener ejemplos de configuración y supervisión y aprender los procedimientos recomendados del regulador de recursos, consulte Tutorial: Ejemplos de configuración del regulador de recursos y procedimientos recomendados.
clasificación
Con el regulador de recursos, cada nueva sesión se clasifica en un grupo de cargas de trabajo. El clasificador es una función escalar definida por el usuario que se crea. Contiene la lógica deseada para asignar sesiones entrantes a un grupo de cargas de trabajo. El valor escalar devuelto por el clasificador es el nombre de un grupo de cargas de trabajo que se asignará a una sesión entrante.
Si el regulador de recursos está habilitado y se especifica una función clasificadora en la configuración del regulador de recursos, la salida de la función determina el grupo de cargas de trabajo usado para las nuevas sesiones. De lo contrario, todas las sesiones de usuario se clasifican en el grupo de trabajo default.
Nota:
El internal grupo de cargas de trabajo solo se usa para las solicitudes internas del sistema. No puede cambiar los criterios usados para asignar solicitudes al internal grupo de cargas de trabajo y no puede clasificar explícitamente las solicitudes en el grupo de internal cargas de trabajo.
Debe completar los pasos siguientes para empezar a usar una función clasificadora:
- Cree la función en la
masterbase de datos mediante CREATE FUNCTION. La función debe usar la vinculación de esquemas. - Referencie la función en la configuración del regulador de recursos mediante ALTER RESOURCE GOVERNOR con el parámetro
CLASSIFIER_FUNCTION. - Haga que la nueva configuración sea eficaz mediante
ALTER RESOURCE GOVERNOR RECONFIGURE.
Importante
Los intentos de conexión del cliente podrían agotar el tiempo de espera si la función de clasificación no se completa dentro del período configurado por el cliente para el tiempo de espera de conexión. Es importante crear funciones clasificadoras que finalicen la ejecución antes de que se produzca un tiempo de espera de conexión.
Mantenga la función clasificadora sencilla. Evite usar lógica compleja o lenta. Si es posible, evite el acceso a los datos en el clasificador.
La función clasificadora tiene las siguientes características y comportamientos:
- La función se define en el ámbito del servidor (en la
masterbase de datos). - La función se define con enlace de esquema. Para obtener más información, vea SCHEMABINDING.
- La función se evalúa para cada nueva sesión, incluso cuando está habilitada la agrupación de conexiones.
- La función devuelve el contexto del grupo de cargas de trabajo para la sesión. La sesión se asigna al grupo de cargas de trabajo devuelto por el clasificador durante la vigencia de la sesión.
- Si la función devuelve
NULL,defaulto el nombre de un grupo de cargas de trabajo inexistente, la sesión recibe el contexto deldefaultgrupo de cargas de trabajo. La sesión también recibe eldefaultcontexto en caso de que se produzca un error en la función por cualquier motivo. - Después de que se añade o elimina una función clasificadora mediante la instrucción
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...), el cambio solo surte efecto tras ejecutar la instrucciónALTER RESOURCE GOVERNOR RECONFIGURE. - Solo se puede designar una función como clasificador a la vez.
- La función clasificadora no se puede modificar ni eliminar a menos que se quite su estado de clasificador mediante
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)la instrucción que establece el nombre de la función enNULLo en el nombre de otra función. - En ausencia de una función clasificadora, todas las sesiones se clasifican en el
defaultgrupo. - Los grupos de cargas de trabajo especificados en la salida de la función clasificadora están fuera del ámbito de la restricción de enlace de esquema. Por ejemplo, no se puede quitar una tabla a la que se hace referencia en la función clasificadora, pero puede quitar un grupo de cargas de trabajo aunque el clasificador devuelva el nombre de ese grupo.
Habilitación de DAC
Para solucionar problemas y diagnósticos, se recomienda habilitar y familiarizarse de forma proactiva con la conexión de administrador dedicado (DAC). La DAC no está sujeta a la clasificación del regulador de recursos. Puede usar una DAC para supervisar y solucionar problemas de una función clasificadora incluso si la configuración del regulador de recursos no funciona correctamente y hace que otras conexiones no se puedan usar. Para obtener más información, consulte Conexión de diagnóstico para administradores de bases de datos.
Si una DAC no está disponible para solucionar problemas, puede iniciar el servidor en modo de usuario único. Aunque la conexión en modo de usuario único no está sujeta a clasificación, no permite diagnosticar la clasificación del regulador de recursos mientras está en ejecución.
Una vez que se conecte mediante una DAC o conéctese en modo de usuario único, puede modificar la configuración del regulador de recursos para quitar una función clasificadora que no funciona correctamente o deshabilitar el regulador de recursos.
Proceso de inicio de sesión
En el contexto del regulador de recursos, el proceso de inicio de sesión de una sesión consta de los pasos siguientes:
- Autenticación de inicio de sesión.
- Ejecución del desencadenador de inicio de sesión . Se produce solo si existen disparadores de inicio de sesión en la instancia.
- Clasificación.
Cuando se inicia la clasificación, el regulador de recursos ejecuta la función clasificadora y usa el valor escalar devuelto por la función para enviar solicitudes al grupo de cargas de trabajo coincidente.
Puede supervisar la ejecución de desencadenadores de inicio de sesión y la función clasificadora mediante sys.dm_exec_sessions y sys.dm_exec_requests vistas del sistema.
Examples
La función clasificadora del regulador de recursos puede usar una amplia variedad de lógicas personalizadas. Para obtener más ejemplos y un tutorial, consulte Tutorial: Ejemplos de configuración del regulador de recursos y procedimientos recomendados.
A. Nombre del anfitrión
Esta función clasifica las sesiones de un nombre de host específico en un grupo de cargas de trabajo denominado Reports, mediante la función del sistema integrada HOST_NAME(). Todas las demás sesiones continúan clasificándose en el grupo de carga de trabajo de 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. Nombre de usuario
Esta función clasifica las sesiones de nombres de usuario específicos o nombres de cuenta de servicio en un grupo de cargas de trabajo denominado Reports, mediante la función del sistema integrada SUSER_SNAME(). Todas las demás sesiones se siguen clasificando en el grupo de cargas de trabajo 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. Nombre de la aplicación
Esta función clasifica las sesiones de nombres de aplicación específicos en un grupo de cargas de trabajo denominado Adhoc, mediante la función del sistema integrada APP_NAME(). Todas las demás sesiones se siguen clasificando en el grupo de trabajo de carga de default.
Importante
Una aplicación o usuario puede proporcionar cualquier nombre de aplicación como parte de la cadena de conexión. Los usuarios pueden conectarse a través de una amplia variedad de aplicaciones.
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