Published on

April 7, 2003

Comprendre les fonctions définies par l’utilisateur dans SQL Server

SQL Server 2000 a introduit le concept de fonctions définies par l’utilisateur (UDF), qui permettaient aux développeurs de créer leurs propres fonctions pour effectuer des tâches spécifiques dans la base de données. En plus de la possibilité de créer des UDF, l’équipe de développement de Microsoft a également inclus plusieurs UDF système dans le produit de base de données.

Ces UDF système, situées dans le schéma spécial “system_function_schema” de la base de données master, fournissent des informations précieuses sur le fonctionnement interne de SQL Server qui ne sont pas disponibles ailleurs. Une de ces UDF système introduite dans SQL Server 2000 Service Pack 3 (SP3) est “fn_get_sql”.

Fn_get_sql est une fonction puissante qui facilite la récupération du texte SQL exécuté par les processus SQL actifs pour les administrateurs de base de données (DBA), les programmeurs et les outils de diagnostic. Cette fonctionnalité est particulièrement utile lors du diagnostic des blocages ou d’autres problèmes de blocage. Les outils de diagnostic qui surveillent l’activité à l’intérieur du moteur de base de données peuvent également tirer parti de cette fonction.

Avant SP3, la méthode courante pour récupérer le SQL utilisé par un processus SQL était d’utiliser la commande DBCC INPUTBUFFER. Cette commande prend un SPID (Server Process ID) comme argument, qui est un entier qui identifie de manière unique une connexion à la base de données. Les SPID inférieurs à 53 sont généralement utilisés par les connexions système, tandis que ceux supérieurs à 53 sont utilisés pour les connexions utilisateur. La fonction intégrée @@SPID peut être utilisée pour obtenir le SPID de la connexion actuelle.

Lorsqu’elle est invoquée, DBCC INPUTBUFFER renvoie un ensemble de lignes avec des colonnes telles que EventType, Parameters et EventInfo. La colonne EventInfo contient le texte du SQL en cours d’exécution pour un événement de langage. Voici un exemple de requête qui montre comment fonctionne DBCC INPUTBUFFER:

DBCC INPUTBUFFER (@@SPID)

Avec l’introduction de fn_get_sql dans SP3, la récupération du SQL exécuté par les processus SQL actifs est devenue beaucoup plus simple. Cette fonction élimine le besoin d’utiliser DBCC INPUTBUFFER et offre une approche plus directe pour accéder au texte SQL.

Il est important de noter que pour utiliser fn_get_sql, il est nécessaire d’installer la version mise à jour de Books Online pour SP3. La documentation mise à jour peut être obtenue sur le site web de Microsoft sans installer SP3. Cependant, lors du processus d’installation, il est crucial de sélectionner l’option d’installation de la documentation mise à jour côte à côte avec la version précédente de Books Online (BOL) pour éviter de l’écraser.

En tirant parti de la puissance des fonctions définies par l’utilisateur et des UDF système comme fn_get_sql, les utilisateurs de SQL Server peuvent obtenir des informations précieuses sur le fonctionnement interne du moteur de base de données. Ces outils permettent non seulement de diagnostiquer et de résoudre les problèmes de performance, mais également d’améliorer la gestion globale et l’optimisation des environnements SQL Server.

Click to rate this post!
[Total: 0 Average: 0]

Let's work together

Send us a message or book free introductory meeting with us using button below.