Pergunta

Eu uso o seguinte para obter uma lista de objetos subjacentes em uma visualização:

SELECT view_name, Table_Name
FROM INFORMATION_SCHEMA.VIEW_TABLE_USAGE
WHERE View_Name IN 
    (
      'View1', 'View2'
    )
ORDER BY view_name, table_name

Não consegui encontrar nenhuma tabela de sistema que fornecesse os objetos base em uma função.Alguém tem alguma idéia de como extrair facilmente essas informações?Estou lidando com muitas funções com vários objetos de banco de dados base e quero evitar esforço manual para obter essas informações.Obrigado!

Foi útil?

Solução

sp_depende fornecerá uma lista de objetos dependentes em todas as versões atuais do SQL Server, mas está listado como obsoleto.

Aqui está um artigo do MSDN com uma forma de encontrar objetos referenciando uma função e com pequenas modificações você pode obter a lista de objetos referenciados por uma função:

SELECT OBJECT_NAME(object_id) AS referencing_object_name
 ,COALESCE(COL_NAME(object_id, column_id), '(n/a)') AS referencing_column_name
 ,object_name(referenced_major_id) as referenced_object
 ,*
FROM sys.sql_dependencies
--WHERE referenced_major_id = OBJECT_ID('schema.objectname')
where object_id = object_id('schema.objectname')
ORDER BY OBJECT_NAME(object_id), COL_NAME(object_id, column_id);

E como bônus: http://beyondrelational.com/modules/2/blogs/28/posts/10399/tsql-lab-9-how-to-find-the-dependency-chain-of-a-database-object.aspx

Outras dicas

* Por favor leia *

Conforme observado na resposta do @Spörri acima, sys.sql_dependencies está obsoleto.


sys.sql_dependencies (Transact-SQL) :

Esse recurso será removido em uma versão futura do Microsoft SQL Server.Evite utilizar esta funcionalidade em novos trabalhos de desenvolvimento e planeje modificar as aplicações que utilizam actualmente esta funcionalidade.Utilização sys.sql_expression_dependencies em vez disso.


Observei entre 3 funções, um ID de objeto funcional estava faltando na tabela obsoleta sys.sql_dependencies, e encontrei tudo no sys.sql_expression_dependencies mesa em vez disso.Então use o abaixo para obter as dependências:

select * 
from sys.sql_expression_dependencies
where referencing_id =  object_id('schema.object_name') 
Licenciado em: CC-BY-SA com atribuição
Não afiliado a dba.stackexchange
scroll top