2010-11-14 6 views
4

J'ai observé la fonction suivante lorsque je renommer une procédure stockée.renommer les procédures stockées

sp_RENAME 'User_Validate', 'sp_UserValidate' 

Et quand je sp_helptext sp_UserValidate le nom de la procédure que je vois est

CREATE PROCEDURE User_Validate 
(@userEmail nvarchar(200), 
@userPassword nvarchar(32)).... 

Pourquoi ne pas le nom soient mis à jour dans la procédure stockée?

Mais quand je vérifie

select * from sys.procedures 

Je trouve le champ de nom étant mis à jour? Quelle est la raison derrière tout cela? La seule conclusion logique que je peux tirer est qu'il vaut mieux abandonner la procédure et recréer avec un nouveau nom.

éditer 1: Si je fais sp_helptext User_Validate il renvoie "L'objet 'User_Validate' n'existe pas dans la base de données 'Process' ou n'est pas valide pour cette opération." Mais quand je vois la procédure stockée le nom User_Validate est toujours là.

Note: Je sais que renommer les procédures stockées n'est pas une bonne pratique, la question que j'ai posée est par curiosité.

Répondre

2

sp_helptext ne pas désosser la procédure, il montre simplement le lot T-SQL original qui a créé la procédure, y compris les commentaires et les espaces blancs.

+0

je sp_helptext pour voir la procédure et la raison pour laquelle je l'ai utilisée, il faut souligner le fait que lorsque j'ai utilisé sp_helptext pour voir à quoi ressemble la procédure stockée (code), le nom de la procédure n'a pas changé .. Ce sera idiot Si je suppose que sp_helptext effectue une fonction céleste plutôt que de vérifier le contexte du fichier. Ma question est la suivante: pourquoi le nom de la procédure ne change-t-il pas? – Chaitanya

+0

Dans un monde idéal, 'sp_rename' * pourrait * entrer dans le texte conservé pour le lot d'origine, l'analyser et remplacer le nom de la procédure. Je ne pense pas que le retour sur investissement soit trop faible pour les efforts de développement. –

0

sp_rename n'est pas recommandé pour renommer les procédures stockées, vues, triggers et fonctions définies par l'utilisateur

Votre conclusion est juste, vous devez laisser tomber et recréer avec un nouveau nom. La même chose est indiqué dans BOL - Rename a Stored Procedure

Vous devriez également vérifier le dependencies of a stored procedure car renommer une procédure stockée peut provoquer des objets dépendants à l'échec si elles ne sont pas mis à jour pour correspondre au changement

Hope this helps