SQL Server 2005 tiene excelentes vistas sys.XXX en el catálogo del sistema que utilizo con frecuencia.
Lo que me sorprende es esto: ¿por qué hay una vista "sys.procedures" para ver información sobre sus procedimientos almacenados, pero no hay una vista "sys.functions" para ver lo mismo para sus funciones almacenadas?
¿Nadie usa funciones almacenadas? ¡Los encuentro muy útiles para, por ejemplo, columnas calculadas y demás!
¿Hay una razón específica por la que faltan las funciones del sistema, o es simplemente algo que no se consideró lo suficientemente importante como para incluirlo en las vistas del catálogo del sistema? ¿Está disponible en SQL Server 2008?
Saludos, Marc
sys.functions
. Tienessys.foreign_keys
y nosys.primary_keys
. De todos modos, les pido que usen el canal abierto de Microsoft para proponer y sugerir nuevas funciones para las versiones futuras de SQL Server en connect.microsoft.com/SQLServer/Feedback Ya he agregado un comentario sobre sys.functions en connect.microsoft.com/ SQLServer / feedback / details / 1127920Respuestas:
Encuentro que las UDF son muy útiles y las uso todo el tiempo.
No estoy seguro de cuál es la razón fundamental de Microsoft para no incluir un equivalente de sys.functions en SQL Server 2005 (o SQL Server 2008, por lo que puedo decir), pero es bastante fácil desarrollar el suyo:
fuente
Otra forma de enumerar las funciones es hacer uso de las vistas INFORMATION_SCHEMA.
Según el sitio web de Microsoft, "las vistas de esquema de información proporcionan una vista interna, independiente de la tabla del sistema, de los metadatos de SQL Server. Las vistas de esquema de información permiten que las aplicaciones funcionen correctamente, aunque se han realizado cambios significativos en las tablas del sistema subyacente". En otras palabras, las tablas del sistema subyacentes pueden cambiar a medida que se actualiza SQL, pero las vistas deberían seguir siendo las mismas.
fuente
INFORMATION_SCHEMA
consulta devuelve resultados muy interesantes comoIS_DETERMINISTIC
(que quería averiguar).Esto es válido en 2008 R2 por lo que SSMS genera cuando se escribe un DROP de una función:
fuente
Es un poco más detallado, pero esto debería hacer exactamente lo mismo:
Por lo que puedo ver, tampoco está en SQL Server 2008.
fuente
Esto no agrega nada nuevo, pero encontré lo siguiente más fácil de recordar:
fuente
{ }
) en la barra de herramientas de editor de formato y la sintaxis muy bien resáltala!sys.objects
tanto como puedo.prueba esto :
fuente
por cierto, ¿no le gustaría incluir type = 'FS'?
eso es lo que corresponde al elemento en sys.objects para mi UDF que se deriva de una DLL externa
fuente
Para ampliar la respuesta de @ LukeH, para devolver las definiciones de función también se requiere una combinación a la
sys.sql_modules
tabla. Entonces la consulta para esto es:donde lo anterior muestra el nombre de la función, su definición y el identificador de objeto respectivamente.
fuente
Para obtener una descripción más completa de las funciones escalares, incluido el propietario y el tipo de retorno:
fuente
SQL 2000
ligero ajuste específico para el nombre del objeto:O
fuente