Comment précomstackr les procédures stockées dans le server SQL?

Bonjour !

Est-il possible de pré comstackr des procédures stockées dans SQL Server? Mon exigence va comme ceci .. J'ai quelques procédures stockées, qui prennent plus de time dans la compilation qu'exécutant. Je veux donc précomstackr toutes les procédures stockées. Ce serait bien de les précomstackr lorsque le server db est démarré et en cours d'exécution.

Toute idée à ce sujet serait grandement utile!

Merci et salutations, Pavan.

vous pouvez forcer une recompilation, mais cela n'arrivera pas avant la prochaine exécution

EXEC SP_RECOMPILE YourProcedureName

plus d'infos ici …

forcez-le à recomstackr chaque fois qu'il est exécuté:
CREATE PROCEDURE YourProcedureNameWITH RECOMPILE …..

forcez-le à recomstackr cette fois:
EXEC YourProcedureName AVEC RECOMPILE

Voici un bon article sur l'optimization des procédures stockées SQL Server pour éviter les recompilations

et un autre…

EDIT basé sur les commentaires de OP:

pourquoi ne pas l'exécuter manuellement (en dehors de l'application) avec des données fausses (pas si faux que le plan d'exécution est mauvais, google: sql server paramètre spoofing et renifler) la première fois, qui peut forcer une compilation, puis exécuter quelques sql pour supprimer ce qui a été inséré. lorsque les users l'exécutent pour la première fois, il aura déjà été exécuté et a été compilé.

Ecrivez un script qui exécute chaque procédure stockée en utilisant "SET FMTONLY ON".

La procédure sera compilée, mais aucun changement permanent ne sera apporté au DB lors de l'exécution. Vous ne pouvez pas utiliser cela avec des procédures qui utilisent des tables temporaires (syntaxe #table).

C'est ainsi que Microsoft le fait dans Visual Studio pour déterminer quelle devrait être la sortie de votre procédure stockée.

Si vous utilisez SQL Server 2008, vous pouvez utiliser un guide de plan pour appliquer la réutilisation d'un plan d'exécution pré-compilé existant.

Voir Comprendre les guides de plan , pour plus de détails et en particulier lire "Guides de plans OBJECT"

Je soupçonne toutefois que la source de votre problème est la logique de process implémentée dans votre procédure stockée et suggère que cela soit votre premier sharepoint révision pour l'optimization des performances.

Est-il possible d'exécuter le SP une seule fois sans affecter datatables? Si c'est le cas, vous pouvez probablement find un moyen de triggersr ce SP au démarrage du server.

Une procédure stockée doit uniquement comstackr (et créer uniquement un plan de requête) lors de sa création et de sa première exécution.

Si vous utilisez beaucoup RECOMPILE, vous devriez arrêter. Si vous le faites pour forcer le recalcul des plans de requête car différents parameters fonctionnent plus efficacement avec différents plans de requête (et si cela est important pour les performances), vous devez envisager de créer différents SP pour les différents plans de requête, éventuellement avec parent "SP pour décider lequel appeler. Mais ce n'est pas un exercice sans douleur.

Si vos tables se situent réellement dans la catégorie des sous-millions de lignes, j'étudierai avec attention les statistics à jour, en les recompilant périodiquement à des heures calmes pour que les plans de requête restnt efficaces. Une fois que vous êtes dans des dizaines ou des centaines de millions de lignes, il peut y avoir une raison de passer par la duplication.

Le time de compilation est rarement important ces jours-ci. Insérez ce code en haut de votre programme et voyez par vous-même à quel point la compilation prend peu de time.

 SET STATISTICS TIME ON GO 

Vous constaterez que les time de compilation sont généralement donnés à 0ms , ce qui signifie trop petit pour déranger, alors que les time d'exécution sont dans les dizaines, les centaines, voire des milliers de millisecondes.