J'ai modifié une table centrale dans ma base de données et sp_depends renvoie littéralement des centaines de résultats, et je crains que certaines de ces procédures stockées ne se compilent plus après ma modification.
Il est facile de vérifier une seule procédure stockée (je viens de réexécuter le script alter et de voir si l'opération a réussi), mais cela sur plus de 100 procédures est un peu lourd.
Je sais que je peux utiliser un script comme celui-ci pour recompiler tous les objets de ma base de données, mais l'opération réelle aura lieu la prochaine fois que la procédure stockée sera exécutée, pas immédiatement, donc cela ne semble pas approprié dans mon cas.
Je pensais également que je pouvais supprimer toutes les procédures stockées et resynchroniser ma base de données avec mon système de contrôle de source, mais cette option, bien que viable, n'est pas très élégante. Existe-t-il une meilleure façon de le faire?
J'utilise SQLServer 2008 R2 et mes scripts de base de données sont stockés dans un projet de base de données VS 2008.
Pour clarifier, je ne préconise pas que l'on devrait s'appuyer uniquement sur cette approche pour tester le code. Tout comme en c #, vous détectez instantanément une erreur de syntaxe dans d'autres fichiers dépendants au fur et à mesure que vous codez (puis utilisez d'autres stratégies pour tester, comme les tests unitaires, qui sont généralement de plusieurs ordres de grandeur plus lents), je pense qu'il serait logique de détecter les dépendances SQL des erreurs en quelques secondes plutôt que d'avoir à exécuter un test fonctionnel complet qui peut généralement prendre quelques heures.
C'est un travail autour, mais vous pouvez générer les scripts CREATE PROCEDURE pour la base de données (base de données clic droit -> tâches -> générer des scripts), trouver et remplacer CREATE PROCEDURE par ALTER PROCEDURE puis analyser.
J'espère que vous obtenez une meilleure réponse ici - ça m'intéresse aussi! :)
la source
Vous pouvez utiliser Sql Server Data Tools (SSDT). Microsoft Visual Studio vous permet de créer un projet Sql Server. On importe ensuite la base de données dans le projet, puis créez le projet. S'il y a des procédures stockées ou des objets cassés, vous obtiendrez une erreur de compilation.
la source
Vous voudrez peut-être regarder cette question SO Je cherche un moyen fiable de vérifier les procédures stockées T-SQL. Quelqu'un en a un? qui demande essentiellement la même chose, avec plusieurs réponses.
Pour s'appuyer sur le script publié par Alaa Awad ... cela devrait montrer le schéma et la base de données des objets référencés et référençant. Si vous utilisez de nombreuses tables temporaires via des alias (qui apparaissent parfois lors de l'utilisation
sys.sql_expression_dependencies
), des paramètres UDTT ou d'autres fonctionnalités dynamiques, vous devrez peut-être utiliser les fonctionssys.dm_sql_referenced_entities
ou à lasys.dm_sql_referencing_entities
place / également.la source
utiliser les sys.sql_expression_dependencies ajoutées dans SQL Server 2008
la source