Il est important de noter qu'en indiquant des paramètres à la requête toutes les instructions, le même lot devrait être paramétré. Considérez l'exemple où nous emploierons le sp_Executesql et paramétrons les requêtes :
Declare @param_value Int, @sqlstring Nvarchar(500), @param_definition Nvarchar( 500), @col2 Int;
Set @param_value
I. Paramétrage des requêtes côté client (4)
= 5;
Set @sqlstring = N’Select @col2_out = col2 From t1 Where col1 = @param;
Update t1 Set col1 = col1 + 1 Where col2 = 6′;
Set @param_definition = N’@param int, @col2_out int output’;
Exec sp_Executesql @sqlstring, @param_definition, @param = @param_value, @col2_out = @col2 output;
Set @sqlstring = N’Select @col2_out = col2 From t1 Where col1 = @param;
Update t1 Set col1 = col1 + 1 Where col2 = 7′;
Exec sp_Executesql @sqlstring, @param_definition, @param = @param_value, @col2_out = @col2 output;
Go
L’instruction Select a été paramétrée, alors que l’instruction Update ne l’a pas été rendant chaque lot unique. Quand ces 2 lots sont exécutés, ils ont un plan compilé pour chaque dans le cache.
(@param int, @col2_out int output)Select @col2_out = col2 From t1 Where col1 = @param; Update t1 set col1 = col1 + 1 Where col2 = 6
(@param int, @col2_out int output)Select @col2_out = col2 From t1 Where col1 = @param; Update t1 set col1 = col1 + 1 Where col2 = 7
Sans la réutilisation du plan compilé préparé, chaque lot qui entre est compilé et un nouveau plan et est inséré dans le cache. Ce qui entraînera une dégradation des performances due au grand nombre de plans compilés dans le cache. Par conséquent, il est important de s’assurer que tous les instructions dans le lot sont paramétrées comme suit :
declare @param_value int, @sqlstring Nvarchar(500), @param_definition Nvarchar( 500), @col2 Int;
set @sqlstring = N’Select @col2_out = col2 From t1 Where col1 = @param1;
Update t1 set col1 = col1 + 1 Where col2 = @param2′;
set @param_definition = N’@param1 int, @param2 int, @col2_out int output’;
set @param_value = 6;
Exec sp_Executesql @sqlstring, @param_definition, @param1 = @param_value, @param2 = @param_value, @col2_out = @col2 output; set @param_value = 7;
Exec sp_Executesql @sqlstring, @param_definition, @param1 = @param_value, @param2 = @param_value, @col2_out = @col2 output;
Go
Un seul plan compilé est produit et utilisé pour les deux exécutions :
(@param1 int, @param2 int, @col2_out int output)Select @col2_out = col2 From t1 Where col1 = @param1; Update t1 set col1 = col1 + 1 Where col2 = @param2
Cette approche est recommandée pour le paramétrage des lots ayant plus d’une requête puisqu’elle tire bénéfice de la réutilisation des plans et évite les problèmes de grossissement du cache de plan. Attention à l’utilisation excessive des requêtes préparées : Si une requête doit être exécutée seulement une fois, alors il est probablement plus efficace d’exécuter directement la requête sur le serveur. Ceci évite un aller-retour sur le réseau pour la préparer.
Téléchargez cette ressource
Sécuriser Microsoft 365 avec une approche Zero-Trust
Découvrez comment renforcer la cyber-résilience de Microsoft 365 grâce à une approche Zero-Trust, une administration granulaire et une automatisation avancée. La technologie Virtual Tenant de CoreView permet de sécuriser et simplifier la gestion des environnements complexes, tout en complétant vos stratégies IAM, y compris dans les secteurs réglementés.
Les articles les plus consultés
- Afficher les icônes cachées dans la barre de notification
- N° 2 : Il faut supporter des langues multiples dans SharePoint Portal Server
- Cybersécurité Active Directory et les attaques de nouvelle génération
- Et si les clients n’avaient plus le choix ?
- Activer la mise en veille prolongée dans Windows 10
Les plus consultés sur iTPro.fr
- IA de confiance : le facteur clé pour rentabiliser les projets d’entreprise
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Hôpitaux virtuels : renforcer le système de santé français grâce au numérique
- Cybercriminalité bancaire : l’IA industrialise les attaques en 2026
Articles les + lus
Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
Model Context Protocol : le contexte, grand oublié du débat
Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
Couchbase lance AI Data Plane pour industrialiser l’IA agentique
Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
À la une de la chaîne Tech
- Quand les « travailleurs numériques » pallient le manque de bras dans l’industrie
- Model Context Protocol : le contexte, grand oublié du débat
- Microsoft dévoile MAI-Thinking-1 : un modèle de raisonnement « enterprise-grade » en preview publique
- Couchbase lance AI Data Plane pour industrialiser l’IA agentique
- Windows 11 : Microsoft généralise le point-in-time restore pour accélérer la remise en service des PC
