SQL dynamique sûr avec sp_executesql
Le SQL dynamique convient aux filtres facultatifs et aux formes variables. La concaténation crée toutefois injection, erreurs de guillemets, mauvaise réutilisation des plans et diagnostic difficile.
SQL dynamique sûr avec sp_executesql
Le SQL dynamique convient aux filtres facultatifs et aux formes variables. La concaténation crée toutefois injection, erreurs de guillemets, mauvaise réutilisation des plans et diagnostic difficile.
Ce qu'il faut mesurer
Vérifiez comment les valeurs entrent, si les identifiants sont limités, si les paramètres ont les types exacts et combien de plans distincts le texte génère.
Approche pratique
Passez les valeurs comme paramètres sp_executesql, limitez les identifiants à une liste et protégez-les avec QUOTENAME, stabilisez le texte par forme et journalisez séparément modèle et valeurs.
Ce qu'il faut éviter
Ne concaténez pas les entrées utilisateur, n'utilisez pas QUOTENAME pour des valeurs arbitraires et ne déclarez pas chaque chaîne en nvarchar(max).
Résultat opérationnel
Le SQL dynamique est sûr et maintenable lorsque la structure est contrôlée et les données paramétrées.
Checklist de production
Établissez une référence et définissez l'amélioration attendue. Testez avec des données et une concurrence représentatives. Conservez la configuration ou le plan d'origine, préparez un retour arrière et surveillez le prochain pic normal de charge.
Pour appliquer cette méthode à un environnement SQL Server précis, utilisez le formulaire ci-dessous et indiquez la version, la taille de la base, le profil de charge et les éléments déjà collectés.