web-dev-qa-db-fra.com

Comment afficher le code de procédure stockée dans SQL Server Management Studio

Je suis nouveau sur SQL Server. Je suis connecté à ma base de données via SQL Server Management Studio. 

J'ai une liste de procédures stockées. Comment visualiser le code de procédure stockée? 

Un clic droit sur la procédure stockée n'a aucune option comme view contents of stored procedure.

Merci.

52
DG3

faites un clic droit sur le proc stocké et sélectionnez la procédure stockée script en tant que CRÉER dans la fenêtre/le presse-papiers/le fichier de l'éditeur de requête

vous pouvez aussi faire Modify quand vous faites un clic droit sur le nom

Si vous souhaitez effectuer plus d'une procédure à la fois, cliquez sur le dossier des procédures stockées, appuyez sur F7, avec CTRL, sélectionnez tous ceux que vous souhaitez, cliquez avec le bouton droit de la souris et sélectionnez script la procédure stockée sous CREATE 

36
SQLMenace

J'imagine que c'est un meilleur moyen d'afficher le code d'une procédure stockée:

sp_helptext <name of your sp>
98
Kniganapolke

L'option s'appelle Modify:

enter image description here

Cela vous montrera le code T-SQL de votre procédure stockée dans une nouvelle fenêtre de requête, avec une introduction ALTER PROCEDURE ..., afin que vous puissiez facilement changer ou modifier votre procédure et la mettre à jour

33
marc_s

Ceci est une autre façon de voir la définition de la procédure stockée

SELECT OBJECT_DEFINITION (OBJECT_ID(N'Your_SP'))
11
sqluser

Utilisez la requête ci-dessous: -

SELECT object_definition(object_id) as [Proc Definition]
FROM sys.objects 
WHERE type='P'
7
ANIL KUMAR DUBEY

Les autres réponses qui recommandent d'utiliser l'explorateur d'objets et de scripter la procédure stockée dans une nouvelle fenêtre de l'éditeur de requêtes et les autres requêtes sont des options solides. 

Personnellement, j'aime bien utiliser la requête ci-dessous pour extraire la définition/le code d'une procédure stockée sur une seule ligne (j'utilise Microsoft SQL Server 2014, mais il semble que cela devrait fonctionner avec SQL Server 2008 et versions ultérieures)

SELECT definition 
FROM sys.sql_modules 
WHERE object_id = OBJECT_ID('yourSchemaName.yourStoredProcedureName')

Plus d'infos sur sys.sql_modules: 

https://docs.Microsoft.com/en-us/sql/relational-databases/system-catalog-views/sys-sql-modules-transact-sql

5
Brian T.A.

sp_helptext 'votre_sp_name'

Dans Management Studio, les résultats par défaut sont affichés en mode grille. Si vous souhaitez le voir en mode texte, allez à:

Requête -> Résultats - - Résultats en texte

ou CTRL + T puis Exécuter.

4
Ryan

au cas où vous n’auriez pas l’autorisation de «modifier», comme moi, vous pouvez installer un outil gratuit appelé «Recherche SQL» (par Redgate). Je l'utilise pour rechercher des mots-clés qui, je le sais, figureront dans le SP. Un aperçu du code SP contenant les mots-clés en surbrillance est renvoyé.

ingénieux! Je copie ensuite ce code dans mon propre SP ou le visualise dans 

1
iDriveTheLateCar

Vous pouvez afficher tout le code des objets stockés dans la base de données avec cette requête:

    USE [test] --Database Name
SELECT
    sch.name+'.'+ob.name AS       [Object], 
    ob.create_date, 
    ob.modify_date, 
    ob.type_desc, 
    mod.definition
FROM 
     sys.objects AS ob
     LEFT JOIN sys.schemas AS sch ON
            sch.schema_id = ob.schema_id
     LEFT JOIN sys.sql_modules AS mod ON
            mod.object_id = ob.object_id
WHERE mod.definition IS NOT NULL --Selects only objects with the definition (code)
0