quinta-feira, 12 de novembro de 2009

Como determinar numa base de dados quais as tabelas que contém um determinado campo?

Há dias deparei-me com a necessidade de determinar quais as tabelas que continham um determinado campo. Tratava-se de uma chave estrangeira que eu já tinha visto que estava a ser designada em várias tabelas da mesma forma: FuncionarioID. A solução é muito simples, basta consultar as tabelas sys.tables e sys.columns:

USE MyDB
GO
SELECT t.name AS table_name,
SCHEMA_NAME(schema_idAS schema_name,
c.name AS column_name
FROM sys.tables AS t
INNER JOIN sys.columns c ON t.OBJECT_ID c.OBJECT_ID
WHERE c.name LIKE '%FuncionarioID%'
ORDER BY schema_nametable_name;



Mais informação sobre este assunto em: http://msdn.microsoft.com/en-us/library/ms345522.aspx

Sem comentários: