Como descobrir quais tabelas foram modificadas recentemente
- sqlserver
Depois de semanas sem postar, vou colocar um post bem breve aqui sobre SQL.
Recentemente precisei descobri quais tabelas foram modificadas recentemente sem ter que ver uma a uma. Se você tivesse poucas tabelas, isso não seria um problema, ver uma-a-uma, digamos umas 15 ou 20 seria até rápido. Mas podemos facilitar um pouco a nossa vida, limitando nossa amostra.
Isto aqui vale para SQL Server, não sei como seria em outras databases (Oracle, Postgree, MySQL e etc).
No SQL Server temos várias Views de sistema, no caso usaremo a View sys.tables, que nos fornece informações diversas sobre as tabelas do banco de dados.
SELECT * FROM sys.tables;
Executando um select sobre esta tabela obteremos um resultado semelhante a este:
A imagem mostra apenas algumas colunas, existem muitas outras, mas vamos nos focar naquelas que precisamo no momento.
Veja que temos os nomes de todas as tabelas, e duas colunas de datas, createdate e modifydate.
A primeira instância, achariamos que teríamos que observer a tabela modify_date e ordenar por ordem decrescente por ela.
SELECT * FROM sys.tables ORDER BY modify_date DESC;
Infelizmente, a informação de data de modificação refere-se a inserção de dados, e não sobre sua estrutura.
A coluna que temos que ver é createdate. Na figura não é possível observar isso, mas a data contida em createdate refere-se a última modificação estrutural realizada sobre ela.
Então bastaríamos fazer:
SELECT * FROM sys.tables ORDER BY create_date DESC;
Eu sei que este post não é muito informativo, é mais uma dica.
Abraços e até o próximo post.