2010-08-13 3 views
3

Si nous avons besoin d'informations qui ne peuvent être obtenues que via une requête dynamique, ne devrait-elle pas être écrite directement dans le code de l'application (dans DAL) plutôt que dans la procédure stockée? Parce que le bénéfice que nous obtenons de SP est déjà perdu si nous utilisons une requête dynamique qui est le plan d'exécution d'exécution déjà enregistré avec lui.Pourquoi écrire une requête dynamique dans une procédure stockée

+0

une chose que je ressens est une meilleure maintenabilité du code. –

Répondre

2

Il y a beaucoup d'autres facets of stored procedures à considérer en plus de leurs fonctionnalités de mise en cache de plan d'exécution, donc je ne pense pas qu'il soit juste de rejeter leur utilisation simplement parce qu'ils vont contenir une requête ad-hoc.

(Il convient également de noter que la réutilisation des plans d'exécution bits correctement formé de SQL dynamique est no barrier)

+0

Sans oublier la sécurité (non mentionnée dans les «facettes des procédures stockées») Les autorisations sont très faciles à gérer pour les procédures stockées, et les développeurs d'applications peuvent ne pas avoir accès au code source du SP. –

2

si votre application appelle actuellement que les procédures stockées, puis le garder cohérent et appeler une procédure stockée et faire le SQL dynamique là-bas. Si votre application est déjà pleine d'instructions SQL générées, créez simplement le SQL dynamique à cet endroit. N'oubliez pas que l'utilisation d'une procédure stockée pour générer dynamiquement SQL ne vous protégera pas d'une attaque par injection. Cependant, les restrictions de type et de taille de paramètre de la procédure peuvent aider à réduire votre exposition à l'injection.

Questions connexes