Anzeigen des Codes für gespeicherte Prozeduren in SQL Server Management Studio


74

Ich bin neu in SQL Server. Ich bin über SQL Server Management Studio in meiner Datenbank angemeldet.

Ich habe eine Liste gespeicherter Prozeduren. Wie kann ich den gespeicherten Prozedurcode anzeigen?

Ein Rechtsklick auf die gespeicherte Prozedur hat keine Option wie view contents of stored procedure.

Vielen Dank.


Sie müssen es "modifizieren".
Jeremy Holovacs

Antworten:


48

Klicken Sie mit der rechten Maustaste auf den gespeicherten Prozess und wählen Sie die gespeicherte Skriptprozedur als CREATE to New Query Editor-Fenster / Zwischenablage / Datei

Sie können auch Änderungen vornehmen, wenn Sie mit der rechten Maustaste auf den Namen klicken

Wenn Sie mehr als einen Prozess gleichzeitig ausführen möchten, klicken Sie auf den Ordner für gespeicherte Prozeduren, drücken Sie F7 mit STRG und klicken Sie auf Alle gewünschten auswählen. Klicken Sie dann mit der rechten Maustaste und wählen Sie die gespeicherte Skriptprozedur als ERSTELLEN aus


6
Ich bevorzuge die 'gespeicherte Skriptprozedur als CREATE' anstelle von 'Modify', wenn ich nur die Prozedur betrachte, damit ich die Prozedur nicht versehentlich ändere.
Simon

120

Ich denke, dies ist eine bessere Möglichkeit, den Code einer gespeicherten Prozedur anzuzeigen:

sp_helptext <name of your sp>

11
Dieser Ansatz funktioniert am besten, wenn die Ergebnisse als Text angezeigt werden ( Tastenkombination Strg + T ).
Florin Dumitrescu

2
@FlorinDumitrescu - Ich ziehe es vor, es im Rastermodus zu belassen und Folgendes zu tun, was extrem schnell ist und jetzt für mich die zweite Natur ist: sp_helptext YourSPName, F5, klicken Sie auf die Kopfspalte "Text", Strg-C, klicken Sie auf eine beliebige Stelle in der Abfrage, Strg -a, Strg-V, Strg-Home, Strg-R. Der Grund, warum mir das gefällt, ist, dass ich Syntaxhervorhebungen bekomme und nicht zum Anfang der Datei scrollen muss. (Und es ist etwas besser als Strg-T, weil es der Datei nicht "Text ---------------" voranstellt.)
TTT

34

Die Option heißt Modify:

Geben Sie hier die Bildbeschreibung ein

Dadurch wird Ihnen der T-SQL-Code für Ihre gespeicherte Prozedur in einem neuen Abfragefenster mit einem ALTER PROCEDURE ...Lead-In angezeigt, sodass Sie Ihre Prozedur einfach ändern oder ergänzen und aktualisieren können


Wenn Ändern deaktiviert ist? Ich habe keine Berechtigung zum Ändern
Alexandr

13

Dies ist eine weitere Möglichkeit, die Definition der gespeicherten Prozedur anzuzeigen

SELECT OBJECT_DEFINITION (OBJECT_ID(N'Your_SP'))

das obige wird nicht das gesamte Prozedurskript geben
Smart003

@ Smart003, ja, das tut es. Wenn Sie Schwierigkeiten haben, alle Zeichen als Rasterergebnis
anzuzeigen,

Vielen Dank - sehr nützlich, wenn das Repository für die Aktualisierung / Verarbeitung gesperrt ist.
Hilary

11

Verwenden Sie die folgende Abfrage: -

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

9

Die anderen Antworten, die empfehlen, den Objektexplorer zu verwenden und die gespeicherte Prozedur in ein neues Abfrageeditorfenster und die anderen Abfragen zu schreiben, sind solide Optionen.

Ich persönlich verwende gerne die folgende Abfrage, um die Definition / den Code der gespeicherten Prozedur in einer einzelnen Zeile abzurufen (ich verwende Microsoft SQL Server 2014, sollte aber anscheinend mit SQL Server 2008 und höher funktionieren).

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

Weitere Informationen zu sys.sql_modules:

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


9

exec sp_helptext 'your_sp_name' - vergiss die Anführungszeichen nicht

In Management Studio werden die Ergebnisse standardmäßig in der Rasteransicht angezeigt. Wenn Sie es in der Textansicht sehen möchten, gehen Sie zu:

Abfrage -> Ergebnisse zu -> Ergebnisse zu Text

oder STRG + T und dann Ausführen.


2

Mit dieser Abfrage können Sie den gesamten in der Datenbank gespeicherten Objektcode anzeigen:

    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)

1

Falls Sie nicht wie ich die Berechtigung zum 'Ändern' haben, können Sie ein kostenloses Tool namens "SQL Search" (von redgate) installieren. Ich verwende es, um nach Schlüsselwörtern zu suchen, von denen ich weiß, dass sie im SP enthalten sind, und es gibt eine Vorschau des SP-Codes mit den hervorgehobenen Schlüsselwörtern zurück.

genial! Ich kopiere diesen Code dann in meinen eigenen SP oder sehe ihn mir an

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.