SQL Server 2005 bietet großartige sys.XXX-Ansichten für den Systemkatalog, die ich häufig verwende.
Was mich stolpert, ist Folgendes: Warum gibt es eine "sys.procedures" -Ansicht, um Informationen zu Ihren gespeicherten Prozeduren anzuzeigen, aber keine "sys.functions" -Ansicht, um dasselbe für Ihre gespeicherten Funktionen anzuzeigen?
Verwendet niemand gespeicherte Funktionen? Ich finde sie sehr praktisch für zB berechnete Spalten und so!
Gibt es einen bestimmten Grund, warum sys.functions fehlt, oder ist es nur etwas, das nicht als wichtig genug angesehen wurde, um es in die sys-Katalogansichten aufzunehmen? Ist es in SQL Server 2008 verfügbar?
Prost, Marc
sys.functions
. Du hastsys.foreign_keys
und neinsys.primary_keys
. Wie auch immer, ich bitte Sie, den offenen Kanal von Microsoft zu verwenden, um neue Funktionen für kommende Versionen von SQL Server unter connect.microsoft.com/SQLServer/Feedback vorzuschlagen und vorzuschlagen. Ich habe bereits ein Feedback zu sys.functions unter connect.microsoft.com/ hinzugefügt. SQLServer / feedback / details / 1127920Antworten:
Ich finde UDFs sehr praktisch und benutze sie ständig.
Ich bin mir nicht sicher, warum Microsoft in SQL Server 2005 (oder SQL Server 2008, soweit ich das beurteilen kann) kein sys.functions-Äquivalent enthält, aber es ist einfach genug, ein eigenes zu erstellen:
quelle
Eine andere Möglichkeit, Funktionen aufzulisten, besteht darin, INFORMATION_SCHEMA-Ansichten zu verwenden.
Laut der Microsoft-Website "bieten Informationsschemaansichten eine interne, systemtabellenunabhängige Ansicht der SQL Server-Metadaten. Mit Informationsschemaansichten können Anwendungen ordnungsgemäß funktionieren, obwohl wesentliche Änderungen an den zugrunde liegenden Systemtabellen vorgenommen wurden". Mit anderen Worten, die zugrunde liegenden Systemtabellen können sich ändern, wenn SQL aktualisiert wird. Die Ansichten sollten jedoch unverändert bleiben.
quelle
INFORMATION_SCHEMA
Abfrage sehr interessante Ergebnisse wieIS_DETERMINISTIC
(die ich herausfinden wollte) zurückgibt .Dies gilt in 2008 R2 gemäß dem, was SSMS generiert, wenn Sie einen DROP einer Funktion skripten:
quelle
Es ist etwas ausführlicher, aber das sollte genau das Gleiche tun:
Soweit ich sehen kann, ist es auch nicht in SQL Server 2008.
quelle
Dies fügt nichts Neues hinzu, aber ich fand Folgendes leichter zu merken:
quelle
{ }
) auf der Editor - Symbolleiste zu schön Format und die Syntax markieren Sie es!sys.objects
so weit wie möglich zu vermeiden .Versuche dies :
quelle
Möchten Sie übrigens nicht type = 'FS' einschließen?
Das ist es, was das Element in sys.objects für meine UDF entspricht, die von einer externen DLL abgeleitet ist
quelle
Um die Antwort von @ LukeH zu erweitern und auch die Funktionsdefinitionen zurückzugeben, ist eine Verknüpfung mit der
sys.sql_modules
Tabelle erforderlich . Die Abfrage hierfür lautet also:Dabei werden oben der Funktionsname, seine Definition und die Objektkennung angezeigt.
quelle
Für eine ausführlichere Beschreibung der Skalarfunktionen einschließlich Eigentümer und Rückgabetyp:
quelle
SQL 2000
spezifische, leichte Anpassung für den Objektnamen:ODER
quelle