J'ai probablement plus de 100 bases de données sur cette instance unique de SQL Server (2005). Je voudrais les énumérer dans l'ordre de leurs dates de création, ou mieux, dans l'ordre de la date de la dernière modification apportée à une table.
Existe-t-il une requête SELECT que je peux écrire et, tout aussi important, dans quel contexte je l'écris et avec quelles autorisations ai-je besoin pour l'exécuter?
Vous pouvez facilement écrire cette requête dans la vue catalogue sys.databases
SELECT * FROM sys.databases
ORDER BY create_date
mais malheureusement, il n'y a pas d'équivalent pour la "date de la dernière modification" dont je suis au courant ...
Cela devrait fonctionner à partir de n'importe quelle base de données sur ce serveur. Peu importe la base de données dans laquelle vous vous trouvez, ces vues de catalogue sys
doivent être accessibles de n'importe où.
create table #db_name (db_name nvarchar(128), last_change datetime);
exec sp_MSForEachDB 'Use ?; insert into #db_name (db_name, last_change) select ''?'', max(modify_date) from sys.tables'
select * from #db_name order by last_change desc
ce n'est pas exactement un choix mais au moins vous avez ce que vous voulez. Je suis propriétaire de l'une de nos bases de données et probablement rien d'impressionnant à l'échelle du serveur, donc ce n'est pas très exigeant.
Cela devrait vous rapprocher de ce que vous voulez.
SELECT name, crdate
FROM master..sysdatabases