Eu trabalho em uma equipe que tem uma configuração de SSRS com aproximadamente 1300 (e crescentes) relatórios enlatados. Como se pode imaginar, isso apresentou problemas quando uma mudança de quebra é introduzida em uma tabela. Encontrar todos os relatórios que podem tocar em uma tabela/campo é, na melhor das hipóteses, propenso a erros.
Estou tentando construir programaticamente um modelo de dependência. Obter o esquema Owner -> Object -> Fields
e como as visualizações/tabelas se relacionam é bastante trivial.
O que estou enfrentando é como obter uma lista resolvida de campos de uma determinada consulta. Posso extrair a consulta dos arquivos RDL, mas interpretar esses arquivos é muito menos. As consultas podem conter aliases para campos e tabelas, além de problemas como select *
. Estou tentando evitar um hack regexp e realmente não quero escrever um interpretador SQL ...
Meu pensamento inicial foi percorrer os arquivos RDL e analisar a saída do plano de explicação. Embora tecnicamente possível, isso não me fornece uma lista completa de campos resolvidos.
Existe algum método no qual eu possa usar para fazer o banco de dados analisar uma determinada consulta e retornar uma lista de Object_Name.Field_Name
? Não me importo de ter que fazer algum processamento de texto para extrair os resultados, se necessário.