MS SQL Server-Objekterstellung / Altes Script
-
19-09-2019 - |
Frage
In SQL Server, wenn Sie wählen Sie einen SP oder UDF zu modifizieren, lädt es die Alte Abfrage in einem Abfrage-Fenster-Objekte. Sind diese Abfragen zugänglich in einer Systemtabelle, damit ich die alten Aussagen irgendwo speichern kann? Es sieht aus wie syscomments einige Objekte hat aber nicht alle von ihnen.
Danke
Lösung
Verwenden Sie syscomments nicht , weil syscomments.text
nvarchar(4000)
ist und als Ergebnis wird etwas gestutzt, die länger ist.
Mit sys.sql_modules
weil definition
nvarchar(max)
ist, wird es nicht lange Code gestutzt.
verwenden, um dies den Text eines bestimmten Verfahrens zu betrachten, Ansicht oder Funktion:
SELECT * FROM sys.sql_modules WHERE object_id=object_id('YourProcedure')
Mit diesem Namen, Typen zu erhalten, und Wortlaut einer Prozedur, Ansicht oder Funktion:
SELECT DISTINCT
o.name AS Object_Name,o.type_desc, m.definition
FROM sys.sql_modules m
INNER JOIN sys.objects o ON m.object_id=o.object_id
WHERE m.object_id=object_id('CPT_SP_IRA_ComboBox_IncidentStatus')
Andere Tipps
Ich bin nicht ganz sicher, was Sie fragen, aber Sie können mit der folgenden Abfrage gespeicherten Prozeduren finden Sie unter:
SELECT SO.Type,SO.Name,SC.Text
FROM sysobjects SO (NOLOCK)
INNER JOIN syscomments SC (NOLOCK) on SO.Id = SC.ID
AND SO.Type = 'P'
ORDER BY SO.Name
Wenn Sie nach verschiedenen Objekttypen sind, nehmen Sie einen Blick auf sys. sysobjects für die verschiedenen Typen.