Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Managed Instance
Le processus de classification du gouverneur de ressources peut utiliser une fonction de classification pour affecter les sessions entrantes à un groupe de charge de travail. La fonction classifieur contient votre logique personnalisée pour classifier des sessions en groupes de charge de travail.
Pour obtenir des exemples de configuration et de surveillance et pour découvrir les meilleures pratiques de Resource Governor, consultez Tutoriel : Exemples de configuration resource governor et bonnes pratiques.
classification ;
Avec resource governor, chaque nouvelle session est classifiée dans un groupe de charge de travail. Le classifieur est une fonction scalaire définie par l’utilisateur que vous créez. Il contient votre logique souhaitée pour affecter des sessions entrantes à un groupe de charge de travail. La valeur scalaire retournée par le classifieur est le nom d’un groupe de charge de travail à affecter à une session entrante.
Si resource governor est activé et qu’une fonction classifieur est spécifiée dans la configuration du gouverneur de ressources, la sortie de la fonction détermine le groupe de charge de travail utilisé pour les nouvelles sessions. Sinon, toutes les sessions utilisateur sont classées dans le default groupe de charge de travail.
Remarque
Le internal groupe de charge de travail est utilisé uniquement pour les requêtes système internes. Vous ne pouvez pas modifier les critères utilisés pour affecter des requêtes au internal groupe de charge de travail et vous ne pouvez pas classer explicitement les requêtes dans le internal groupe de charge de travail.
Vous devez effectuer les étapes suivantes pour commencer à utiliser une fonction classifieur :
- Créez la fonction dans la base de données
masteren utilisant CREATE FUNCTION. La fonction doit utiliser la liaison de schéma. - Référencez la fonction dans la configuration du Resource Governor à l’aide de ALTER RESOURCE GOVERNOR avec le paramètre
CLASSIFIER_FUNCTION. - Rendre la nouvelle configuration efficace à l’aide de
ALTER RESOURCE GOVERNOR RECONFIGURE.
Important
Les tentatives de connexion client peuvent expirer si la fonction classifieur ne se termine pas pendant la période d’expiration de connexion configurée par le client. Il est important de créer des fonctions classificateur qui terminent leur exécution avant que le délai d’expiration de la connexion ne soit atteint.
Conservez la fonction classifieur simple. Évitez d’utiliser une logique complexe ou fastidieuse. Si possible, évitez l’accès aux données dans le classifieur.
La fonction classifieur présente les caractéristiques et comportements suivants :
- La fonction est définie dans l’étendue du serveur (dans la
masterbase de données). - La fonction est définie avec la liaison de schéma. Pour plus d’informations, consultez SCHEMABINDING.
- La fonction est évaluée pour chaque nouvelle session, même lorsque le regroupement de connexions est activé.
- La fonction renvoie le contexte du groupe de travail pour la session. La session est affectée au groupe de charges de travail déterminé par le classifieur pendant toute sa durée.
- Si la fonction retourne
NULL,defaultou le nom d’un groupe de charge de travail inexistant, la session reçoit le contexte dudefaultgroupe de charge de travail. La session reçoit également ledefaultcontexte si la fonction échoue pour une raison quelconque. - Une fois qu'une fonction classifieur est ajoutée ou supprimée à l'aide d'une instruction
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)using, la modification prend effet uniquement après l'exécution de l'instructionALTER RESOURCE GOVERNOR RECONFIGURE. - Une seule fonction peut être désignée comme classifieur à la fois.
- La fonction classifieur ne peut pas être modifiée ou supprimée, sauf si son état de classifieur est supprimé à l’aide
ALTER RESOURCE GOVERNOR (WITH CLASSIFIER_FUNCTION = ...)de l’instruction qui définit le nomNULLde la fonction ou le nom d’une autre fonction. - En l’absence d’une fonction classifieur, toutes les sessions sont classées dans le
defaultgroupe. - Les groupes de charge de travail spécifiés dans la sortie de la fonction classifieur sont en dehors de l’étendue de la restriction de liaison de schéma. Par exemple, vous ne pouvez pas supprimer une table référencée dans la fonction classifieur, mais vous pouvez supprimer un groupe de charge de travail même si le classifieur retourne le nom de ce groupe.
Activer DAC
À des fins de résolution des problèmes et de diagnostic, nous vous recommandons d’activer et de vous familiariser de manière proactive avec la connexion d’administrateur dédié (DAC). La DAC n'est pas soumise à la classification du gouverneur de ressources. Vous pouvez utiliser une DAC pour surveiller et résoudre les problèmes d’une fonction de classifieur même si votre configuration resource governor fonctionne mal et rend d’autres connexions non utilisables. Pour plus d’informations, consultez Connexion de diagnostic pour les administrateurs de base de données.
Si une DAC n’est pas disponible pour la résolution des problèmes, vous pouvez démarrer le serveur en mode mono-utilisateur. Bien que la connexion en mode utilisateur unique ne soit pas soumise à la classification, elle ne vous donne pas la possibilité de diagnostiquer la classification du gouverneur de ressources pendant son exécution.
Une fois que vous vous connectez à l’aide d’une DAC ou connectez-vous en mode mono-utilisateur, vous pouvez modifier la configuration du gouverneur de ressources pour supprimer une fonction classifieur défaillante ou désactiver resource governor.
Processus de connexion
Dans le contexte du gouverneur de ressources, le processus de connexion d’une session se compose des étapes suivantes :
- Authentification de connexion.
- Exécution du déclencheur de connexion. Se produit uniquement si des déclencheurs d’ouverture de session existent dans l’instance.
- Classification.
Au démarrage de la classification, resource governor exécute la fonction classifieur et utilise la valeur scalaire retournée par la fonction pour envoyer des requêtes au groupe de charge de travail correspondant.
Vous pouvez surveiller l'exécution des déclencheurs de connexion et de la fonction de classification à l'aide des vues système sys.dm_exec_sessions et sys.dm_exec_requests.
Examples
La fonction de classification du Gouverneur de ressources peut utiliser une grande variété de logiques personnalisées. Pour plus d’exemples et une procédure pas à pas, consultez Tutoriel : Exemples de configuration Resource Governor et meilleures pratiques.
R. Nom de l’hôte
Cette fonction classifie les sessions d’un nom d’hôte spécifique dans un groupe de charge de travail nommé Reports, à l’aide de la fonction système intégrée HOST_NAME(). Toutes les autres sessions continuent d’être classées dans le default groupe de charge de travail.
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. Nom d'utilisateur
Cette fonction classifie les sessions à partir de noms d’utilisateurs ou de noms de compte de service spécifiques dans un groupe de charge de travail nommé Reports, à l’aide de la fonction système intégrée SUSER_SNAME(). Toutes les autres sessions continuent d’être classées dans le default groupe de charge de travail.
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
Chapitre C. Nom de l’application
Cette fonction classifie les sessions à partir de noms d’application spécifiques dans un groupe de charge de travail nommé Adhoc, à l’aide de la fonction système intégrée APP_NAME(). Toutes les autres sessions continuent d’être classées dans le default groupe de charge de travail.
Important
Une application ou un utilisateur peut fournir n’importe quel nom d’application dans le cadre de la chaîne de connexion. Les utilisateurs peuvent se connecter via un large éventail d’applications.
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