Considérations sur l'écriture d'une fonction classifieur

Le gouverneur de ressources prend en charge des fonctions définies par l'utilisateur dont les valeurs de retour sont utilisées pour classifier des sessions qui sont ensuite routées vers le groupe de charge de travail approprié.

La fonction classifieur définie par l'utilisateur doit être testée et optimisée avant d'être utilisée pour classifier des requêtes entrantes. Une fonction mal écrite peut rendre le système inutilisable par expiration, ce qui risque d'exposer des informations de configuration. Vous pouvez utiliser une connexion administrateur dédiée (DAC) pour corriger une fonction classifieur mal écrite, car une DAC n'est pas sujette à la classification et peut être utilisée alors que le gouverneur de ressources est en cours d'exécution et de classification des sessions entrantes. Pour plus d'informations, consultez Utilisation d'une connexion d'administrateur dédiée.

[!REMARQUE]

Si aucune DAC n'est disponible pour résoudre le problème, vous pouvez redémarrer le système en mode mono-utilisateur. Bien que ce mode ne soit pas sujet à la classification, vous ne pouvez pas diagnostiquer la classification du gouverneur de ressources lorsqu'elle est en cours.

Vous pouvez utiliser des fonctions système existantes dans vos fonctions classifieur et utiliser les valeurs qu'elles retournent pour classifier des sessions.

Fonctions

Les fonctions système suivantes peuvent être utilisées pour la classification : HOST_NAME(), APP_NAME(), SUSER_NAME(), SUSER_SNAME(), IS_SRVROLEMEMBER() et IS_MEMBER().

AttentionAttention

Lorsque vous créez une fonction qui retourne une propriété utilisée pour la classification, vous devez tenir compte du fait que cette propriété est ou non sécurisée. Si elle ne l'est pas, vous devez évaluer le risque lié à l'utilisation de l'attribut. Les fonctions HOST_NAME() et APP_NAME() retournent des propriétés qui ne sont pas sécurisées. Par exemple, APP_NAME() peut retourner toute valeur fournie dans une chaîne de connexion d'application.

La fonction LOGINPROPERTY a été mise à jour avec les deux propriétés que vous pouvez utiliser pour la classification : DefaultDatabase et DefaultLanguage. De plus, vous pouvez utiliser la fonction ORIGINAL_DB_NAME pour obtenir le nom de la base de données spécifiée dans la chaîne de connexion utilisateur.

Le gouverneur de ressources implémente aussi la fonction CONNECTIONPROPERTY pour fournir des propriétés supplémentaires que vous pouvez utiliser pour la classification. Cette fonction retourne les mêmes valeurs pour les propriétés pour la connexion unique utilisée par une demande que les colonnes correspondantes dans la vue de gestion dynamique sys.dm_exec_connections.