O SQL Server 2005 tem ótimas exibições sys.XXX no catálogo do sistema, que eu uso com frequência.
O que me confunde é o seguinte: por que há uma exibição "sys.procedures" para ver informações sobre seus procedimentos armazenados, mas não há uma exibição "sys.functions" para ver o mesmo para suas funções armazenadas?
Ninguém usa funções armazenadas? Acho que são muito úteis, por exemplo, para colunas computadas e coisas do gênero!
Existe um motivo específico para a falta de sys.functions ou é apenas algo que não foi considerado importante o suficiente para ser colocado nas visualizações do catálogo sys ?? Está disponível no SQL Server 2008 ??
Saúde, Marc
sys.functions
. Você temsys.foreign_keys
e nãosys.primary_keys
. De qualquer forma, peço a vocês que usem o canal aberto da Microsoft para propor e sugerir novos recursos para as próximas versões do SQL Server em connect.microsoft.com/SQLServer/Feedback . Já adicionei um feedback sobre sys.functions em connect.microsoft.com/ SQLServer / feedback / details / 1127920Respostas:
Eu acho que os UDFs são muito úteis e eu os uso o tempo todo.
Não tenho certeza de qual é o fundamento lógico da Microsoft para não incluir um equivalente sys.functions no SQL Server 2005 (ou SQL Server 2008, pelo que posso dizer), mas é fácil de criar o seu próprio:
fonte
Outra maneira de listar funções é usar as visualizações INFORMATION_SCHEMA.
De acordo com o site da Microsoft, "As visualizações do esquema de informações fornecem uma visualização interna independente da tabela do sistema dos metadados do SQL Server. As visualizações do esquema de informações permitem que os aplicativos funcionem corretamente, embora mudanças significativas tenham sido feitas nas tabelas do sistema subjacentes". Em outras palavras, as tabelas de sistema subjacentes podem mudar conforme o SQL é atualizado, mas as visualizações ainda devem permanecer as mesmas.
fonte
INFORMATION_SCHEMA
consulta retorna resultados muito interessantes comoIS_DETERMINISTIC
(que eu queria descobrir).Isso é válido em 2008 R2 de acordo com o que o SSMS gera quando você faz um script DROP de uma função:
fonte
É um pouco mais detalhado, mas deve fazer exatamente a mesma coisa:
Pelo que posso ver, também não está no SQL Server 2008.
fonte
Isso não acrescenta nada de novo, mas achei o seguinte mais fácil de lembrar:
fonte
{ }
) na barra de ferramentas do editor de bem formato e sintaxe destacá-lo!sys.objects
tanto quanto posso.tente isto:
fonte
aliás, você não gostaria de incluir type = 'FS'?
é a isso que o item em sys.objects corresponde para meu UDF, que é derivado de uma DLL externa
fonte
Para estender a resposta de @ LukeH, retornar as definições da função também requer uma junção à
sys.sql_modules
tabela. Portanto, a consulta para isso é:onde o acima exibe o nome da função, sua definição e o identificador do objeto respectivamente.
fonte
Para uma descrição mais completa das funções escalares, incluindo proprietário e tipo de retorno:
fonte
SQL 2000
pequeno ajuste específico para o nome do objeto:OU
fonte