SQL Server 2005 ma świetne widoki sys.XXX w katalogu systemowym, z którego często korzystam.
To, co mnie potyka, to: dlaczego istnieje widok „sys.procedures”, aby wyświetlić informacje o procedurach składowanych, ale nie ma widoku „sys.functions”, aby zobaczyć to samo dla funkcji składowanych?
Czy nikt nie używa zapisanych funkcji? Uważam je za bardzo przydatne np. W przypadku kolumn obliczonych i tym podobnych!
Czy istnieje konkretny powód braku sys.functions, czy jest to po prostu coś, co nie zostało uznane za wystarczająco ważne, aby umieścić je w widokach katalogu sys? Czy jest dostępny w SQL Server 2008?
Pozdrawiam, Marc
sys.functions
. Maszsys.foreign_keys
i niesys.primary_keys
. W każdym razie, proszę was o skorzystanie z otwartego kanału Microsoftu, aby zaproponować i zasugerować nowe funkcje dla przyszłych wersji SQL Server na connect.microsoft.com/SQLServer/Feedback. Dodałem już opinię dotyczącą sys.functions na connect.microsoft.com/ SQLServer / feedback / details / 1127920Odpowiedzi:
Uważam, że UDF są bardzo przydatne i używam ich cały czas.
Nie jestem pewien, jakie są powody, dla których Microsoft nie zawiera odpowiednika sys.functions w SQL Server 2005 (lub SQL Server 2008, o ile wiem), ale łatwo jest wprowadzić własne:
źródło
Innym sposobem tworzenia listy funkcji jest użycie widoków INFORMATION_SCHEMA.
Według witryny internetowej firmy Microsoft „Widoki schematów informacji zapewniają wewnętrzny, niezależny od tabel systemowych widok metadanych programu SQL Server. Widoki schematów informacji umożliwiają poprawną pracę aplikacji, mimo że w podstawowych tabelach systemowych wprowadzono istotne zmiany”. Innymi słowy, podstawowe tabele systemowe mogą ulec zmianie, gdy SQL zostanie zaktualizowany, ale widoki powinny pozostać takie same.
źródło
INFORMATION_SCHEMA
zapytanie zwraca bardzo ciekawe wyniki, takie jakIS_DETERMINISTIC
(które chciałem się dowiedzieć).Jest to ważne w 2008 R2 według tego, co SSMS generuje podczas skryptu DROP funkcji:
źródło
Jest nieco bardziej szczegółowy, ale powinno to zrobić dokładnie to samo:
O ile widzę, nie ma go również w SQL Server 2008.
źródło
Nie dodaje to niczego nowego, ale łatwiej zapamiętać:
źródło
{ }
) na pasku narzędzi edytora, aby ładnie format i składnia go podświetlić!sys.objects
tak bardzo, jak tylko mogę.Spróbuj tego :
źródło
nawiasem mówiąc, czy nie chciałbyś dołączyć type = 'FS'?
temu odpowiada element w sys.objects dla mojego UDF, który pochodzi z zewnętrznej biblioteki DLL
źródło
Aby rozszerzyć odpowiedź @ LukeH, zwrócenie definicji funkcji również wymaga sprzężenia z
sys.sql_modules
tabelą. Zatem zapytanie o to brzmi:gdzie powyżej wyświetla odpowiednio nazwę funkcji, jej definicję i identyfikator obiektu.
źródło
Aby uzyskać pełniejszy opis funkcji skalarnych, w tym właściciela i zwracanego typu:
źródło
SQL 2000
specyficzna, niewielka korekta nazwy obiektu:LUB
źródło